Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / test / data / notifications / platform_notification_service.html
blob5d42c3ce6a8dafec5014e569f5b1ec0bd0fb0ed4
1 <!doctype html>
2 <html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <title>Platform Notification Service BrowserTest service page</title>
6 </head>
7 <body>
8 <!-- This page is intended to be used by the cross-platform
9 PlatformNotificationServiceBrowserTest. -->
10 <script src="notification_test_utils.js"></script>
11 <script>
12 var messagePort = null,
13 messageStack = [],
14 expectingMessage = false;
16 // Requests permission to display Web Notifications. Will return the
17 // permission level to the DOM Automation Controller.
18 function RequestPermission() {
19 Notification.requestPermission(function (level) {
20 domAutomationController.send(level);
21 });
24 // Renews the registered Service Worker registration for this page, then
25 // displays a notification on the activated ServiceWorkerRegistration.
26 function DisplayPersistentNotification(title, options) {
27 options = options || { body: 'Hello, world!',
28 icon: 'icon.png' };
30 GetActivatedServiceWorker('platform_notification_service.js',
31 location.pathname)
32 .then(function (registration) {
33 return registration.showNotification(title, options);
34 }).then(function () {
35 messagePort.addEventListener('message', function (event) {
36 if (expectingMessage)
37 domAutomationController.send(event.data);
38 else
39 messageStack.push(event.data);
40 });
42 domAutomationController.send('ok');
43 }).catch(function (error) {
44 domAutomationController.send('' + error);
45 });
48 // Displays a persistent notification having every field in its options
49 // bag filled out with non-default values.
50 function DisplayPersistentAllOptionsNotification() {
51 DisplayPersistentNotification('Title', {
52 dir: 'rtl',
53 lang: 'nl-NL',
54 body: 'Contents',
55 tag: 'replace-id',
56 icon: 'icon.png',
57 silent: true,
58 data: [
59 { property: 'value' }
61 });
64 // Displays a persistent notification with vibrate field.
65 function DisplayPersistentNotificationVibrate() {
66 DisplayPersistentNotification('Title', {
67 body: 'Contents',
68 vibrate: [100, 200, 300]
69 });
72 // Displays a persistent notification with a data: URL as its image.
73 function DisplayPersistentNotificationDataUrlImage() {
74 fetch('icon.png').then(function(response) {
75 return response.blob();
76 }).then(function(blob) {
77 var reader = new FileReader();
78 reader.readAsDataURL(blob);
79 reader.onloadend = function() {
80 DisplayPersistentNotification('Data URL Title', {
81 body: 'Contents',
82 icon: reader.result
83 });
85 });
88 // Displays a persistent notification with a blob URL as its image.
89 function DisplayPersistentNotificationBlobImage() {
90 fetch('icon.png').then(function(response) {
91 return response.blob();
92 }).then(function(blob) {
93 DisplayPersistentNotification('Blob Title', {
94 body: 'Contents',
95 icon: URL.createObjectURL(blob)
96 });
97 });
100 // Returns the latest received message from the worker. If no message has
101 // been received, nothing will be done. For successfully registered
102 // Service Workers this is OK, however, since the "message" event handler
103 // in DisplayPersistentNotification will take care of notifying the DOM
104 // Automation Controller instead.
105 function GetMessageFromWorker() {
106 if (!messageStack.length) {
107 expectingMessage = true;
108 return;
111 domAutomationController.send('' + messageStack.pop());
113 </script>
114 </body>
115 </html>