[Cronet] Delay StartNetLog and StopNetLog until native request context is initialized
[chromium-blink-merge.git] / chrome / test / data / notifications / platform_notification_service.html
blob7c4eb868001c1989361f636c144294610290a3ca
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 });
61 // Displays a persistent notification with a data: URL as its image.
62 function DisplayPersistentNotificationDataUrlImage() {
63 fetch('icon.png').then(function(response) {
64 return response.blob();
65 }).then(function(blob) {
66 var reader = new FileReader();
67 reader.readAsDataURL(blob);
68 reader.onloadend = function() {
69 DisplayPersistentNotification('Data URL Title', {
70 body: 'Contents',
71 icon: reader.result
72 });
74 });
77 // Displays a persistent notification with a blob URL as its image.
78 function DisplayPersistentNotificationBlobImage() {
79 fetch('icon.png').then(function(response) {
80 return response.blob();
81 }).then(function(blob) {
82 DisplayPersistentNotification('Blob Title', {
83 body: 'Contents',
84 icon: URL.createObjectURL(blob)
85 });
86 });
89 // Returns the latest received message from the worker. If no message has
90 // been received, nothing will be done. For successfully registered
91 // Service Workers this is OK, however, since the "message" event handler
92 // in DisplayPersistentNotification will take care of notifying the DOM
93 // Automation Controller instead.
94 function GetMessageFromWorker() {
95 if (!messageStack.length) {
96 expectingMessage = true;
97 return;
100 domAutomationController.send('' + messageStack.pop());
102 </script>
103 </body>
104 </html>