• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note:
2    1) The <head> information in this page is significant, should be uniform
3       across api docs and should be edited only with knowledge of the
4       templating mechanism.
5    3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
6       browser, it will be re-generated from the template, json schema and
7       authored overview content.
8    4) The <body>.innerHTML is also generated by an offline step so that this
9       page may easily be indexed by search engines.
10--><html xmlns="http://www.w3.org/1999/xhtml"><head>
11    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
12    <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css">
13    <link href="css/print.css" rel="stylesheet" type="text/css" media="print">
14    <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js">
15    </script>
16    <script type="text/javascript" src="js/api_page_generator.js"></script>
17    <script type="text/javascript" src="js/bootstrap.js"></script>
18    <script type="text/javascript" src="js/sidebar.js"></script>
19  <title>Desktop Notifications - Google Chrome Extensions - Google Code</title></head>
20  <body>  <div id="gc-container" class="labs">
21      <div id="devModeWarning">
22        You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files.
23      </div>
24      <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION -->
25      <!-- In particular, sub-templates that recurse, must be used by allowing
26           jstemplate to make a copy of the template in this section which
27           are not operated on by way of the jsskip="true" -->
28      <div style="display:none">
29
30        <!-- VALUE -->
31        <div id="valueTemplate">
32          <dt>
33            <var>paramName</var>
34              <em>
35
36                <!-- TYPE -->
37                <div style="display:inline">
38                  (
39                    <span class="optional">optional</span>
40                    <span class="enum">enumerated</span>
41                    <span id="typeTemplate">
42                      <span>
43                        <a> Type</a>
44                      </span>
45                      <span>
46                        <span>
47                          array of <span><span></span></span>
48                        </span>
49                        <span>paramType</span>
50                        <span></span>
51                      </span>
52                    </span>
53                  )
54                </div>
55
56              </em>
57          </dt>
58          <dd class="todo">
59            Undocumented.
60          </dd>
61          <dd>
62            Description of this parameter from the json schema.
63          </dd>
64          <dd>
65            This parameter was added in version
66            <b><span></span></b>.
67            You must omit this parameter in earlier versions,
68            and you may omit it in any version.  If you require this
69            parameter, the manifest key
70            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
71            can ensure that your extension won't be run in an earlier browser version.
72          </dd>
73
74          <!-- OBJECT PROPERTIES -->
75          <dd>
76            <dl>
77              <div>
78                <div>
79                </div>
80              </div>
81            </dl>
82          </dd>
83
84          <!-- OBJECT METHODS -->
85          <dd>
86            <div></div>
87          </dd>
88
89          <!-- OBJECT EVENT FIELDS -->
90          <dd>
91            <div></div>
92          </dd>
93
94          <!-- FUNCTION PARAMETERS -->
95          <dd>
96            <div></div>
97          </dd>
98
99        </div> <!-- /VALUE -->
100
101        <div id="functionParametersTemplate">
102          <h5>Parameters</h5>
103          <dl>
104            <div>
105              <div>
106              </div>
107            </div>
108          </dl>
109        </div>
110      </div> <!-- /SUBTEMPLATES -->
111
112  <a id="top"></a>
113    <div id="skipto">
114      <a href="#gc-pagecontent">Skip to page content</a>
115      <a href="#gc-toc">Skip to main navigation</a>
116    </div>
117    <!-- API HEADER -->
118    <table id="header" width="100%" cellspacing="0" border="0">
119      <tbody><tr>
120        <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td>
121        <td valign="middle" width="100%" style="padding-left:0.6em;">
122          <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em">
123            <div id="gsc-search-box">
124              <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno">
125              <input type="hidden" name="ie" value="UTF-8">
126              <input type="text" name="q" value="" size="55">
127              <input class="gsc-search-button" type="submit" name="sa" value="Search">
128              <br>
129              <span class="greytext">e.g. "page action" or "tabs"</span>
130            </div>
131          </form>
132
133          <script type="text/javascript" src="http://www.google.com/jsapi"></script>
134          <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>
135          <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&amp;t13n_langs=en"></script>
136          <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&amp;lang=en"></script>
137        </td>
138      </tr>
139    </tbody></table>
140
141    <div id="codesiteContent" class="">
142
143      <a id="gc-topnav-anchor"></a>
144      <div id="gc-topnav">
145        <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1>
146        <ul id="home" class="gc-topnav-tabs">
147          <li id="home_link">
148            <a href="index.html" title="Google Chrome Extensions home page">Home</a>
149          </li>
150          <li id="docs_link">
151            <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a>
152          </li>
153          <li id="faq_link">
154            <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a>
155          </li>
156          <li id="samples_link">
157            <a href="samples.html" title="Sample extensions (with source code)">Samples</a>
158          </li>
159          <li id="group_link">
160            <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a>
161          </li>
162        </ul>
163      </div> <!-- end gc-topnav -->
164
165    <div class="g-section g-tpl-170">
166      <!-- SIDENAV -->
167      <div class="g-unit g-first" id="gc-toc">
168        <ul>
169          <li><a href="getstarted.html">Getting Started</a></li>
170          <li><a href="overview.html">Overview</a></li>
171          <li><a href="whats_new.html">What's New?</a></li>
172          <li><h2><a href="devguide.html">Developer's Guide</a></h2>
173            <ul>
174              <li>Browser UI
175                <ul>
176                  <li><a href="browserAction.html">Browser Actions</a></li>
177                  <li><a href="contextMenus.html">Context Menus</a></li>
178                  <li class="leftNavSelected">Desktop Notifications</li>
179                  <li><a href="omnibox.html">Omnibox</a></li>
180                  <li><a href="options.html">Options Pages</a></li>
181                  <li><a href="override.html">Override Pages</a></li>
182                  <li><a href="pageAction.html">Page Actions</a></li>
183                </ul>
184              </li>
185              <li>Browser Interaction
186                <ul>
187                  <li><a href="bookmarks.html">Bookmarks</a></li>
188                  <li><a href="cookies.html">Cookies</a></li>
189                  <li><a href="events.html">Events</a></li>
190                  <li><a href="history.html">History</a></li>
191                  <li><a href="management.html">Management</a></li>
192                  <li><a href="tabs.html">Tabs</a></li>
193                  <li><a href="windows.html">Windows</a></li>
194                </ul>
195              </li>
196              <li>Implementation
197                <ul>
198                  <li><a href="a11y.html">Accessibility</a></li>
199                  <li><a href="background_pages.html">Background Pages</a></li>
200                  <li><a href="content_scripts.html">Content Scripts</a></li>
201                  <li><a href="xhr.html">Cross-Origin XHR</a></li>
202                  <li><a href="idle.html">Idle</a></li>
203                  <li><a href="i18n.html">Internationalization</a></li>
204                  <li><a href="messaging.html">Message Passing</a></li>
205                  <li><a href="npapi.html">NPAPI Plugins</a></li>
206                </ul>
207              </li>
208              <li>Finishing
209                <ul>
210                  <li><a href="hosting.html">Hosting</a></li>
211                  <li><a href="external_extensions.html">Other Deployment Options</a></li>
212                </ul>
213              </li>
214            </ul>
215          </li>
216          <li><h2><a href="apps.html">Packaged Apps</a></h2></li>
217          <li><h2><a href="tutorials.html">Tutorials</a></h2>
218            <ul>
219              <li><a href="tut_debugging.html">Debugging</a></li>
220              <li><a href="tut_analytics.html">Google Analytics</a></li>
221              <li><a href="tut_oauth.html">OAuth</a></li>
222            </ul>
223          </li>
224          <li><h2>Reference</h2>
225            <ul>
226              <li>Formats
227                <ul>
228                  <li><a href="manifest.html">Manifest Files</a></li>
229                  <li><a href="match_patterns.html">Match Patterns</a></li>
230                </ul>
231              </li>
232              <li><a href="permission_warnings.html">Permission Warnings</a></li>
233              <li><a href="api_index.html">chrome.* APIs</a></li>
234              <li><a href="api_other.html">Other APIs</a></li>
235            </ul>
236          </li>
237          <li><h2><a href="samples.html">Samples</a></h2></li>
238          <div class="line"> </div>
239          <li><h2>More</h2>
240            <ul>
241              <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li>
242              <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li>
243              <li><a href="themes.html">Themes</a></li>
244            </ul>
245          </li>
246        </ul>
247      </div>
248      <script>
249        initToggles();
250      </script>
251
252    <div class="g-unit" id="gc-pagecontent">
253      <div id="pageTitle">
254        <h1 class="page_title">Desktop Notifications</h1>
255      </div>
256        <!-- TABLE OF CONTENTS -->
257        <div id="toc">
258          <h2>Contents</h2>
259          <ol>
260            <li>
261              <a href="#manifest">Manifest</a>
262              <ol>
263                <li style="display: none; ">
264                  <a>h3Name</a>
265                </li>
266              </ol>
267            </li><li>
268              <a href="#communication">Communicating with other views</a>
269              <ol>
270                <li style="display: none; ">
271                  <a>h3Name</a>
272                </li>
273              </ol>
274            </li><li>
275              <a href="#examples"> Examples </a>
276              <ol>
277                <li style="display: none; ">
278                  <a>h3Name</a>
279                </li>
280              </ol>
281            </li><li>
282              <a href="#api">API</a>
283              <ol>
284                <li style="display: none; ">
285                  <a>h3Name</a>
286                </li>
287              </ol>
288            </li>
289              <li style="display: none; ">
290                <a href="#apiReference">API reference</a>
291                <ol>
292                  <li>
293                    <a href="#properties">Properties</a>
294                    <ol>
295                      <li>
296                        <a href="#property-anchor">propertyName</a>
297                      </li>
298                    </ol>
299                  </li>
300                  <li>
301                    <a>Methods</a>
302                    <ol>
303                      <li>
304                        <a href="#method-anchor">methodName</a>
305                      </li>
306                    </ol>
307                  </li>
308                  <li>
309                    <a>Events</a>
310                    <ol>
311                      <li>
312                        <a href="#event-anchor">eventName</a>
313                      </li>
314                    </ol>
315                  </li>
316                  <li>
317                    <a href="#types">Types</a>
318                    <ol>
319                      <li>
320                        <a href="#id-anchor">id</a>
321                      </li>
322                    </ol>
323                  </li>
324                </ol>
325              </li>
326          </ol>
327        </div>
328        <!-- /TABLE OF CONTENTS -->
329
330        <!-- Standard content lead-in for experimental API pages -->
331        <p id="classSummary" style="display: none; ">
332          For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page.
333        </p>
334
335        <!-- STATIC CONTENT PLACEHOLDER -->
336        <div id="static"><div id="pageData-name" class="pageData">Desktop Notifications</div>
337<div id="pageData-showTOC" class="pageData">true</div>
338
339<!-- BEGIN AUTHORED CONTENT -->
340<p>
341Use desktop notifications to notify users that something
342important has happened.
343Notifications appear outside the browser window.
344As the following snapshots show,
345the details of how notifications look
346and where they're shown depend on the platform.
347</p>
348
349<img src="images/notification-windows.png" width="28%" style="margin:2em 0.5em 1em; border:1px solid black;" alt="Notifications on Microsoft Windows">
350<img src="images/notification-mac.png" width="28%" style="margin:2em 0.5em 1em; border:1px solid black;" alt="Notifications on Mac OS X">
351<img src="images/notification-linux.png" width="28%" style="margin:2em 0.5em 1em; border:1px solid black;" alt="Notifications on Ubuntu Linux">
352
353<p>
354You create the notification window
355using a bit of JavaScript and, optionally,
356an HTML page packaged inside your extension.
357</p>
358
359
360<h2 id="manifest">Manifest</h2>
361
362<p>
363You can request the notification permission
364in the <a href="manifest.html">extension manifest</a>,
365like this:
366</p>
367
368<pre>{
369  "name": "My extension",
370  ...
371<b>  "permissions": [
372    "notifications"
373  ]</b>,
374  ...
375}</pre>
376
377<p class="note">
378<b>Note:</b> Extensions that declare
379the <code>notifications</code> permission
380are always allowed to create notifications.
381There is no need to call
382<code>webkitNotifications.checkPermission()</code>.
383</p>
384
385<h2 id="communication">Communicating with other views</h2>
386
387<p>
388You can communicate between a notification
389and other views in your extension using
390<a href="extension.html#method-getBackgroundPage">getBackgroundPage()</a> and
391<a href="extension.html#method-getViews">getViews()</a>. For example:
392</p>
393
394<pre>// Inside a notification...
395chrome.extension.getBackgroundPage().doThing();
396
397// From the background page...
398chrome.extension.getViews({type:"notification"}).forEach(function(win) {
399  win.doOtherThing();
400});
401</pre>
402
403
404<h2 id="examples"> Examples </h2>
405
406<p>
407You can find a simple example
408of using notifications in the
409<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/">examples/api/notifications</a>
410directory.
411For other examples
412and for help in viewing the source code,
413see <a href="samples.html">Samples</a>.
414</p>
415
416<p>
417Also see html5rocks.com's
418<a href="http://www.html5rocks.com/tutorials/notifications/quick/">notifications tutorial</a>.
419Ignore the permission-related code;
420it's unnecessary if you declare the "notifications" permission.
421</p>
422
423<h2 id="api">API</h2>
424
425<p>
426The desktop notification API for extensions
427is the same one that
428is available to normal web pages.
429As the following code shows,
430you first create either a simple text notification
431or an HTML notification,
432and then you show the notification.
433</p>
434
435<pre>// Create a simple text notification:
436var notification = webkitNotifications.createNotification(
437  '48.png',  // icon url - can be relative
438  'Hello!',  // notification title
439  'Lorem ipsum...'  // notification body text
440);
441
442// Or create an HTML notification:
443var notification = webkitNotifications.createHTMLNotification(
444  'notification.html'  // html url - can be relative
445);
446
447// Then show the notification.
448notification.show();
449</pre>
450
451<p>For complete API details,
452see the <a href="http://dev.chromium.org/developers/design-documents/desktop-notifications/api-specification">Desktop notifications draft specification</a>.</p>
453
454<!-- END AUTHORED CONTENT -->
455</div>
456
457        <!-- API PAGE -->
458        <div class="apiPage" style="display: none; ">
459        <a name="apiReference"></a>
460        <h2>API reference: chrome.apiname </h2>
461
462          <!-- PROPERTIES -->
463          <div class="apiGroup">
464            <a name="properties"></a>
465            <h3 id="properties">Properties</h3>
466
467            <div>
468              <a></a>
469              <h4>getLastError</h4>
470              <div class="summary">
471                <!-- Note: intentionally longer 80 columns -->
472                <span>chrome.extension</span><span>lastError</span>
473              </div>
474              <div>
475              </div>
476            </div>
477
478          </div> <!-- /apiGroup -->
479
480          <!-- METHODS -->
481          <div id="methodsTemplate" class="apiGroup">
482            <a></a>
483            <h3>Methods</h3>
484
485            <!-- iterates over all functions -->
486            <div class="apiItem">
487              <a></a> <!-- method-anchor -->
488              <h4>method name</h4>
489
490              <div class="summary"><span>void</span>
491                  <!-- Note: intentionally longer 80 columns -->
492                  <span>chrome.module.methodName</span>(<span><span>, </span><span></span>
493                      <var><span></span></var></span>)</div>
494
495              <div class="description">
496                <p class="todo">Undocumented.</p>
497                <p>
498                  A description from the json schema def of the function goes here.
499                </p>
500
501                <!-- PARAMETERS -->
502                <h4>Parameters</h4>
503                <dl>
504                  <div>
505                    <div>
506                    </div>
507                  </div>
508                </dl>
509
510                <!-- RETURNS -->
511                <h4>Returns</h4>
512                <dl>
513                  <div>
514                    <div>
515                    </div>
516                  </div>
517                </dl>
518
519                <!-- CALLBACK -->
520                <div>
521                  <div>
522                  <h4>Callback function</h4>
523                  <p>
524                    The callback <em>parameter</em> should specify a function
525                    that looks like this:
526                  </p>
527                  <p>
528                    If you specify the <em>callback</em> parameter, it should
529                    specify a function that looks like this:
530                  </p>
531
532                  <!-- Note: intentionally longer 80 columns -->
533                  <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre>
534                  <dl>
535                    <div>
536                      <div>
537                      </div>
538                    </div>
539                  </dl>
540                  </div>
541                </div>
542
543                <!-- MIN_VERSION -->
544                <p>
545                  This function was added in version <b><span></span></b>.
546                  If you require this function, the manifest key
547                  <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
548                  can ensure that your extension won't be run in an earlier browser version.
549                </p>
550              </div> <!-- /description -->
551
552            </div>  <!-- /apiItem -->
553
554          </div>  <!-- /apiGroup -->
555
556          <!-- EVENTS -->
557          <div id="eventsTemplate" class="apiGroup">
558            <a></a>
559            <h3>Events</h3>
560            <!-- iterates over all events -->
561            <div class="apiItem">
562              <a></a>
563              <h4>event name</h4>
564
565              <div class="summary">
566                <!-- Note: intentionally longer 80 columns -->
567                <span class="subdued">chrome.bookmarks</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>);
568              </div>
569
570              <div class="description">
571                <p class="todo">Undocumented.</p>
572                <p>
573                  A description from the json schema def of the event goes here.
574                </p>
575
576                <!-- PARAMETERS -->
577                <div>
578                  <h4>Parameters</h4>
579                  <dl>
580                    <div>
581                      <div>
582                      </div>
583                    </div>
584                  </dl>
585                </div>
586              </div> <!-- /decription -->
587
588            </div> <!-- /apiItem -->
589
590          </div> <!-- /apiGroup -->
591
592          <!-- TYPES -->
593          <div class="apiGroup">
594            <a name="types"></a>
595            <h3 id="types">Types</h3>
596
597            <!-- iterates over all types -->
598            <div class="apiItem">
599              <a></a>
600              <h4>type name</h4>
601
602              <div>
603              </div>
604
605            </div> <!-- /apiItem -->
606
607          </div> <!-- /apiGroup -->
608
609        </div> <!-- /apiPage -->
610      </div> <!-- /gc-pagecontent -->
611    </div> <!-- /g-section -->
612  </div> <!-- /codesiteContent -->
613    <div id="gc-footer" --="">
614      <div class="text">
615  <p>
616  Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>,
617  the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
618  Attribution 3.0 License</a>, and code samples are licensed under the
619  <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
620  </p>
621  <p>
622  ©2011 Google
623  </p>
624
625<!-- begin analytics -->
626<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
627<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>
628
629<script type="text/javascript">
630  // chrome doc tracking
631  try {
632    var engdocs = _gat._getTracker("YT-10763712-2");
633    engdocs._trackPageview();
634  } catch(err) {}
635
636  // code.google.com site-wide tracking
637  try {
638    _uacct="UA-18071-1";
639    _uanchor=1;
640    _uff=0;
641    urchinTracker();
642  }
643  catch(e) {/* urchinTracker not available. */}
644</script>
645<!-- end analytics -->
646      </div>
647    </div> <!-- /gc-footer -->
648  </div> <!-- /gc-container -->
649</body></html>
650