OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Window initialization code. Set up event handlers. |
| 6 window.addEventListener("load", function() { |
| 7 // set up the event listeners. |
| 8 chrome.notificationProvider.onCreated.addListener(notificationCreated); |
| 9 chrome.notificationProvider.onUpdated.addListener(notificationUpdated); |
| 10 chrome.notificationProvider.onCleared.addListener(notificationCleared); |
| 11 }); |
| 12 |
| 13 function displayImage(text, bitmap, div) { |
| 14 var image = document.createElement("p"); |
| 15 image.appendChild(document.createTextNode(text)); |
| 16 var imageCanvas = document.createElement("canvas"); |
| 17 image.appendChild(imageCanvas); |
| 18 div.appendChild(image); |
| 19 |
| 20 var imageContext = imageCanvas.getContext('2d'); |
| 21 imageCanvas.width = bitmap.width; |
| 22 imageCanvas.height = bitmap.height; |
| 23 var imagedata = imageContext.createImageData(bitmap.width, |
| 24 bitmap.height); |
| 25 var dataView = new Uint8Array(bitmap.data); |
| 26 for (var i = 0; i < bitmap.width * bitmap.height * 4; i += 1) { |
| 27 imagedata.data[i] = dataView[i]; |
| 28 } |
| 29 imageContext.putImageData(imagedata, 0, 0); |
| 30 } |
| 31 |
| 32 function addNotification(senderId, notificationId, details) { |
| 33 var list = document.getElementById("notification_list"); |
| 34 |
| 35 var div = document.createElement("div"); |
| 36 div.class = "notifications"; |
| 37 div.id = senderId + notificationId; |
| 38 |
| 39 line = document.createElement("br"); |
| 40 div.appendChild(line); |
| 41 |
| 42 // Create a close button. |
| 43 var closeButton = document.createElement("button"); |
| 44 closeButton.class = "closeButtons"; |
| 45 var buttonText = document.createTextNode("close notificaiton"); |
| 46 closeButton.appendChild(buttonText); |
| 47 div.appendChild(closeButton); |
| 48 closeButton.addEventListener("click", function(){ |
| 49 clearNotification(senderId, notificationId) |
| 50 }, false); |
| 51 |
| 52 // Display title. |
| 53 var bold = document.createElement("b"); |
| 54 var title = document.createElement("p"); |
| 55 bold.appendChild(document.createTextNode(details.title)); |
| 56 title.appendChild(bold); |
| 57 div.appendChild(title); |
| 58 |
| 59 // Display notification ID. |
| 60 var id = document.createElement("p"); |
| 61 id.appendChild(document.createTextNode("Notification ID: " + notificationId)); |
| 62 div.appendChild(id); |
| 63 |
| 64 // Disply the type of notication. |
| 65 var notType = document.createElement("p"); |
| 66 notType.appendChild(document.createTextNode("Type: " + details.type)); |
| 67 div.appendChild(notType); |
| 68 |
| 69 // Display the priority field of the notification. |
| 70 var priority = document.createElement("p"); |
| 71 priority.appendChild(document.createTextNode("Priority: " + |
| 72 details.priority)); |
| 73 div.appendChild(priority); |
| 74 |
| 75 // Display the message of the notification. |
| 76 var message = document.createElement("p"); |
| 77 message.appendChild(document.createTextNode("Message: " + details.message)); |
| 78 div.appendChild(message); |
| 79 |
| 80 // Display the icon image of the notification. |
| 81 displayImage("Icon: ", details.iconBitmap, div); |
| 82 |
| 83 // Display the context message of the notification if it has one. |
| 84 if ("contextMessage" in details) { |
| 85 var message = document.createElement("p"); |
| 86 message.appendChild(document.createTextNode("Message: " + details.message)); |
| 87 div.appendChild(message); |
| 88 } |
| 89 |
| 90 // Display the progress of the notification if it has one. |
| 91 if (details.type == "progress" && "progress" in details) { |
| 92 var progress = document.createElement("p"); |
| 93 progress.appendChild(document.createTextNode("Progress: " + |
| 94 details.progress)); |
| 95 div.appendChild(progress); |
| 96 } |
| 97 |
| 98 // Display if the notification is clickable. |
| 99 if ("isClickable" in details) { |
| 100 var clickable = document.createElement("p"); |
| 101 clickable.appendChild(document.createTextNode("IsClickable: " + |
| 102 details.isClickable)); |
| 103 div.appendChild(clickable); |
| 104 } |
| 105 |
| 106 // Display the time the notification was created. |
| 107 if ("eventTime" in details) { |
| 108 var time = document.createElement("p"); |
| 109 time.appendChild(document.createTextNode("Event Time: " + |
| 110 details.eventTime)); |
| 111 div.appendChild(time); |
| 112 } |
| 113 |
| 114 // Display the list data of the notification if it's of list type. |
| 115 if (details.type = "list" && "items" in details) { |
| 116 for (var i = 0, size = details.items.length; i < size; i++) { |
| 117 var item = document.createElement("p"); |
| 118 item.appendChild(document.createTextNode( |
| 119 "Item " + (i+1) + ": " + |
| 120 details.items[i].title + " - " + |
| 121 details.items[i].message)); |
| 122 div.appendChild(item); |
| 123 } |
| 124 } |
| 125 |
| 126 // Display image of the notification if it's of image type. |
| 127 if (details.type = "image" && "imageBitmap" in details) { |
| 128 displayImage("Image: ", details.imageBitmap, div); |
| 129 } |
| 130 |
| 131 // Display the buttons of the notification if it has some. |
| 132 if ("buttons" in details) { |
| 133 for (var i = 0, size = details.buttons.length; i < size; i++) { |
| 134 var button = document.createElement("p"); |
| 135 button.appendChild(document.createTextNode( |
| 136 "Button " + (i+1) + ": " + details.buttons[i].title)); |
| 137 div.appendChild(button); |
| 138 if ("iconBitmap" in details.buttons[i]) { |
| 139 displayImage("Button " + (i+1) + ": ", |
| 140 details.buttons[i].iconBitmap, |
| 141 div); |
| 142 } |
| 143 } |
| 144 } |
| 145 |
| 146 div.appendChild(document.createElement("br")); |
| 147 list.appendChild(div); |
| 148 } |
| 149 |
| 150 function clearedCallback(ifCleared){} |
| 151 |
| 152 function clearNotification(senderId, notificationId) { |
| 153 var list = document.getElementById("notification_list"); |
| 154 list.removeChild(document.getElementById(senderId + notificationId)); |
| 155 chrome.notificationProvider.notifyOnCleared(senderId, |
| 156 notificationId, |
| 157 clearedCallback); |
| 158 } |
| 159 |
| 160 function notificationCreated(senderId, notificationId, details){ |
| 161 addNotification(senderId, notificationId, details); |
| 162 } |
| 163 |
| 164 function notificationUpdated(senderId, notificationId, details){ |
| 165 var list = document.getElementById("notification_list"); |
| 166 list.removeChild(document.getElementById(senderId + notificationId)); |
| 167 addNotification(senderId, notificationId, details); |
| 168 } |
| 169 |
| 170 function notificationCleared(senderId, notificationId){ |
| 171 clearNotification(senderId, notificationId); |
| 172 } |
OLD | NEW |