OLD | NEW |
| (Empty) |
1 // Copyright 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 |