summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/docs/examples/api/notifications/background.html
blob: 0d192fa3138848f07f6433499d99392ed6f3b795 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!--
  A background page that manages notifications.

  Copyright 2010 the Chromium Authors

  Use of this source code is governed by a BSD-style license that can be found
  in the "LICENSE" file.

  Brian Kennish <bkennish@chromium.org>
-->
<script>
  /*
    Displays a notification with the current time. Requires "notifications"
    permission in the manifest file (or calling
    "webkitNotifications.requestPermission" beforehand).
  */
  function show() {
    var time = /(..)(:..)/(Date());              // The prettyprinted time.
    var hour = time[1] % 12 || 12;               // The prettyprinted hour.
    var period = time[1] < 12 ? 'a.m.' : 'p.m.'; // The period of the day.
    var notification = webkitNotifications.createNotification(
      '48.png',                      // The image.
      hour + time[2] + ' ' + period, // The title.
      'Time to make the toast.'      // The body.
    );
    notification.show();
  }

  // Conditionally initialize the options.
  if (!localStorage.isInitialized) {
    localStorage.isActivated = true;   // The display activation.
    localStorage.frequency = 1;        // The display frequency, in minutes.
    localStorage.isInitialized = true; // The option initialization.
  }

  // Test for notification support.
  if (webkitNotifications) {
    // While activated, show notifications at the display frequency.
    if (JSON.parse(localStorage.isActivated)) { show(); }

    var interval = 0; // The display interval, in minutes.

    setInterval(function() {
      interval++;

      if (
        JSON.parse(localStorage.isActivated) &&
          localStorage.frequency <= interval
      ) {
        show();
        interval = 0;
      }
    }, 60000);
  } else {
    // Show a new tab with an error message.
    chrome.tabs.create({url: 'error.html'});
  }
</script>