15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Displays a notification with the current time. Requires "notifications" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) permission in the manifest file (or calling 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "Notification.requestPermission" beforehand). 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function show() { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var time = /(..)(:..)/.exec(new Date()); // The prettyprinted time. 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var hour = time[1] % 12 || 12; // The prettyprinted hour. 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var period = time[1] < 12 ? 'a.m.' : 'p.m.'; // The period of the day. 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new Notification(hour + time[2] + ' ' + period, { 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) icon: '48.png', 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) body: 'Time to make the toast.' 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Conditionally initialize the options. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if (!localStorage.isInitialized) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.isActivated = true; // The display activation. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.frequency = 1; // The display frequency, in minutes. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.isInitialized = true; // The option initialization. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test for notification support. 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)if (window.Notification) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // While activated, show notifications at the display frequency. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (JSON.parse(localStorage.isActivated)) { show(); } 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var interval = 0; // The display interval, in minutes. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setInterval(function() { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) interval++; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JSON.parse(localStorage.isActivated) && 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.frequency <= interval 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show(); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) interval = 0; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 60000); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 46