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

Unified Diff: chrome/test/data/extensions/api_test/notification_provider/test_app/main.js

Issue 461403005: add a test app using notification provider API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add copyright headers Created 6 years, 4 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
Index: chrome/test/data/extensions/api_test/notification_provider/test_app/main.js
diff --git a/chrome/test/data/extensions/api_test/notification_provider/test_app/main.js b/chrome/test/data/extensions/api_test/notification_provider/test_app/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..cada35f90ef6313f5c5fe089309ac0ffac21ce17
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/notification_provider/test_app/main.js
@@ -0,0 +1,172 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Window initialization code. Set up event handlers.
+window.addEventListener("load", function() {
+ // set up the event listeners.
+ chrome.notificationProvider.onCreated.addListener(notificationCreated);
+ chrome.notificationProvider.onUpdated.addListener(notificationUpdated);
+ chrome.notificationProvider.onCleared.addListener(notificationCleared);
+});
+
+function displayImage(text, bitmap, div) {
+ var image = document.createElement("p");
+ image.appendChild(document.createTextNode(text));
+ var imageCanvas = document.createElement("canvas");
+ image.appendChild(imageCanvas);
+ div.appendChild(image);
+
+ var imageContext = imageCanvas.getContext('2d');
+ imageCanvas.width = bitmap.width;
+ imageCanvas.height = bitmap.height;
+ var imagedata = imageContext.createImageData(bitmap.width,
+ bitmap.height);
+ var dataView = new Uint8Array(bitmap.data);
+ for (var i = 0; i < bitmap.width * bitmap.height * 4; i += 1) {
+ imagedata.data[i] = dataView[i];
+ }
+ imageContext.putImageData(imagedata, 0, 0);
+}
+
+function addNotification(senderId, notificationId, details) {
+ var list = document.getElementById("notification_list");
+
+ var div = document.createElement("div");
+ div.class = "notifications";
+ div.id = senderId + notificationId;
+
+ line = document.createElement("br");
+ div.appendChild(line);
+
+ // Create a close button.
+ var closeButton = document.createElement("button");
+ closeButton.class = "closeButtons";
+ var buttonText = document.createTextNode("close notificaiton");
+ closeButton.appendChild(buttonText);
+ div.appendChild(closeButton);
+ closeButton.addEventListener("click", function(){
+ clearNotification(senderId, notificationId)
+ }, false);
+
+ // Display title.
+ var bold = document.createElement("b");
+ var title = document.createElement("p");
+ bold.appendChild(document.createTextNode(details.title));
+ title.appendChild(bold);
+ div.appendChild(title);
+
+ // Display notification ID.
+ var id = document.createElement("p");
+ id.appendChild(document.createTextNode("Notification ID: " + notificationId));
+ div.appendChild(id);
+
+ // Disply the type of notication.
+ var notType = document.createElement("p");
+ notType.appendChild(document.createTextNode("Type: " + details.type));
+ div.appendChild(notType);
+
+ // Display the priority field of the notification.
+ var priority = document.createElement("p");
+ priority.appendChild(document.createTextNode("Priority: " +
+ details.priority));
+ div.appendChild(priority);
+
+ // Display the message of the notification.
+ var message = document.createElement("p");
+ message.appendChild(document.createTextNode("Message: " + details.message));
+ div.appendChild(message);
+
+ // Display the icon image of the notification.
+ displayImage("Icon: ", details.iconBitmap, div);
+
+ // Display the context message of the notification if it has one.
+ if ("contextMessage" in details) {
+ var message = document.createElement("p");
+ message.appendChild(document.createTextNode("Message: " + details.message));
+ div.appendChild(message);
+ }
+
+ // Display the progress of the notification if it has one.
+ if (details.type == "progress" && "progress" in details) {
+ var progress = document.createElement("p");
+ progress.appendChild(document.createTextNode("Progress: " +
+ details.progress));
+ div.appendChild(progress);
+ }
+
+ // Display if the notification is clickable.
+ if ("isClickable" in details) {
+ var clickable = document.createElement("p");
+ clickable.appendChild(document.createTextNode("IsClickable: " +
+ details.isClickable));
+ div.appendChild(clickable);
+ }
+
+ // Display the time the notification was created.
+ if ("eventTime" in details) {
+ var time = document.createElement("p");
+ time.appendChild(document.createTextNode("Event Time: " +
+ details.eventTime));
+ div.appendChild(time);
+ }
+
+ // Display the list data of the notification if it's of list type.
+ if (details.type = "list" && "items" in details) {
+ for (var i = 0, size = details.items.length; i < size; i++) {
+ var item = document.createElement("p");
+ item.appendChild(document.createTextNode(
+ "Item " + (i+1) + ": " +
+ details.items[i].title + " - " +
+ details.items[i].message));
+ div.appendChild(item);
+ }
+ }
+
+ // Display image of the notification if it's of image type.
+ if (details.type = "image" && "imageBitmap" in details) {
+ displayImage("Image: ", details.imageBitmap, div);
+ }
+
+ // Display the buttons of the notification if it has some.
+ if ("buttons" in details) {
+ for (var i = 0, size = details.buttons.length; i < size; i++) {
+ var button = document.createElement("p");
+ button.appendChild(document.createTextNode(
+ "Button " + (i+1) + ": " + details.buttons[i].title));
+ div.appendChild(button);
+ if ("iconBitmap" in details.buttons[i]) {
+ displayImage("Button " + (i+1) + ": ",
+ details.buttons[i].iconBitmap,
+ div);
+ }
+ }
+ }
+
+ div.appendChild(document.createElement("br"));
+ list.appendChild(div);
+}
+
+function clearedCallback(ifCleared){}
+
+function clearNotification(senderId, notificationId) {
+ var list = document.getElementById("notification_list");
+ list.removeChild(document.getElementById(senderId + notificationId));
+ chrome.notificationProvider.notifyOnCleared(senderId,
+ notificationId,
+ clearedCallback);
+}
+
+function notificationCreated(senderId, notificationId, details){
+ addNotification(senderId, notificationId, details);
+}
+
+function notificationUpdated(senderId, notificationId, details){
+ var list = document.getElementById("notification_list");
+ list.removeChild(document.getElementById(senderId + notificationId));
+ addNotification(senderId, notificationId, details);
+}
+
+function notificationCleared(senderId, notificationId){
+ clearNotification(senderId, notificationId);
+}

Powered by Google App Engine
This is Rietveld 408576698