Home | History | Annotate | Download | only in docs
      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>Other Deployment Options - 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&t13n_langs=en"></script>
    136           <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&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><a href="notifications.html">Desktop Notifications</a></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 class="leftNavSelected">Other Deployment Options</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">Other Deployment Options</h1>
    255       </div>
    256         <!-- TABLE OF CONTENTS -->
    257         <div id="toc">
    258           <h2>Contents</h2>
    259           <ol>
    260             <li>
    261               <a href="#prereqs">Before you begin</a>
    262               <ol>
    263                 <li style="display: none; ">
    264                   <a>h3Name</a>
    265                 </li>
    266               </ol>
    267             </li><li>
    268               <a href="#preferences">Using a preferences file</a>
    269               <ol>
    270                 <li style="display: none; ">
    271                   <a>h3Name</a>
    272                 </li>
    273               </ol>
    274             </li><li>
    275               <a href="#registry">Using the Windows registry</a>
    276               <ol>
    277                 <li style="display: none; ">
    278                   <a>h3Name</a>
    279                 </li>
    280               </ol>
    281             </li><li>
    282               <a href="#updating">Updating and uninstalling</a>
    283               <ol>
    284                 <li style="display: none; ">
    285                   <a>h3Name</a>
    286                 </li>
    287               </ol>
    288             </li><li>
    289               <a href="#faq">FAQ</a>
    290               <ol>
    291                 <li style="display: none; ">
    292                   <a>h3Name</a>
    293                 </li>
    294               </ol>
    295             </li>
    296               <li style="display: none; ">
    297                 <a href="#apiReference">API reference</a>
    298                 <ol>
    299                   <li>
    300                     <a href="#properties">Properties</a>
    301                     <ol>
    302                       <li>
    303                         <a href="#property-anchor">propertyName</a>
    304                       </li>
    305                     </ol>
    306                   </li>
    307                   <li>
    308                     <a>Methods</a>
    309                     <ol>
    310                       <li>
    311                         <a href="#method-anchor">methodName</a>
    312                       </li>
    313                     </ol>
    314                   </li>
    315                   <li>
    316                     <a>Events</a>
    317                     <ol>
    318                       <li>
    319                         <a href="#event-anchor">eventName</a>
    320                       </li>
    321                     </ol>
    322                   </li>
    323                   <li>
    324                     <a href="#types">Types</a>
    325                     <ol>
    326                       <li>
    327                         <a href="#id-anchor">id</a>
    328                       </li>
    329                     </ol>
    330                   </li>
    331                 </ol>
    332               </li>
    333           </ol>
    334         </div>
    335         <!-- /TABLE OF CONTENTS -->
    336 
    337         <!-- Standard content lead-in for experimental API pages -->
    338         <p id="classSummary" style="display: none; ">
    339           For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page.
    340         </p>
    341 
    342         <!-- STATIC CONTENT PLACEHOLDER -->
    343         <div id="static"><div id="pageData-name" class="pageData">Other Deployment Options</div>
    344 <div id="pageData-showTOC" class="pageData">true</div>
    345 
    346 <p>
    347 Usually, users install their own extensions.
    348 But sometimes you might want an extension
    349 to be installed automatically.
    350 Here are two typical cases:
    351 </p>
    352 
    353 <ul>
    354   <li>
    355     An extension is associated with some other software,
    356     and the extension should be installed
    357     whenever the user installs that other software.
    358     The extension could also be uninstalled
    359     when the user removes that other software.
    360   </li>
    361   <li>
    362     A network admin wants to install the same extensions
    363     throughout the company.
    364   </li>
    365 </ul>
    366 
    367 <p>
    368 An extension that's installed automatically is known as an
    369 <em>external extension</em>.
    370 Google Chrome supports two ways of
    371 installing external extensions:
    372 </p>
    373 
    374 <ul>
    375   <li> Using a preferences JSON file </li>
    376   <li> Using the Windows registry (Windows only) </li>
    377 </ul>
    378 
    379 <p>
    380 Both ways support installing an extension from a <code>.crx</code> extension
    381 file on the user's computer.  The preferences JSON file also supports installing
    382 an extension hosted at an
    383 <a href="autoupdate.html#H2-1">update URL</a>.
    384 See <a href="hosting.html">hosting</a> for details on hosting an extension.
    385 </p>
    386 
    387 <h2 id="prereqs">Before you begin</h2>
    388 
    389 <p>
    390 First, package a
    391 <a href="packaging.html"><code>.crx</code> file</a>
    392 and make sure that it installs successfully.
    393 </p>
    394 <p>
    395 If you wish to install from an
    396  <a href="autoupdate.html#H2-1">update URL</a>, ensure that the extension
    397 is properly <a href="hosting.html">hosted</a>.
    398 </p>
    399 
    400 <p>
    401 Then, before you edit the preferences file or the registry,
    402 make a note of the following:
    403 </p>
    404 
    405 <ul>
    406  <li> The intended <b>location</b> of the extension's <code>.crx</code> file,
    407         or the update URL from which it is served </li>
    408  <li> The extension's <b>version</b>
    409    (from the manifest file or the <b>chrome://extensions</b> page) </li>
    410  <li> The extension's <b>ID</b>
    411    (from the <b>chrome://extensions</b> page
    412    when you've loaded the packed extension) </li>
    413 </ul>
    414 
    415 <p>
    416 The following examples assume the version is <code>1.0</code>
    417 and the ID is <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>.
    418 </p>
    419 
    420 <h2 id="preferences">Using a preferences file</h2>
    421 
    422 <p class="note">
    423 <b>Windows note:</b>
    424 Until <a href="http://crbug.com/41902">bug 41902</a> is fixed,
    425 you might want to use the <a href="#registry">Windows registry</a>
    426 instead of the preferences file.
    427 
    428 </p>
    429 
    430 <ol>
    431 <li>If you are installing from a file, make the <code>.crx</code> extension
    432 file available to the machine you want to install the extension on.
    433 (Copy it to a local directory or to a network share for example,
    434 <code>\\server\share\extension.crx</code>
    435 or <code>/home/share/extension.crx</code>.)
    436 </li>
    437 <li>Locate the <code>external_extensions.json</code> file
    438   under the Google Chrome installation directory.
    439   If the file doesn't exist, create it.
    440   The location depends on the operating system.
    441   <dl>
    442   <dt> Windows: </dt>
    443     <dd> <code><em>chrome_root</em>\Application\<em>chrome_version</em>\Extensions\</code>
    444     <br>
    445     Example: <code>c:\Users\Me\AppData\Local\Google\Chrome\Application\6.0.422.0\Extensions\</code>
    446     </dd>
    447   <dt> Mac OS X: </dt>
    448     <dd> <code>/Applications/Google Chrome.app/Contents/Extensions/</code> </dd>
    449   <dt> Linux: </dt>
    450     <dd> <code>/opt/google/chrome/extensions/</code> <br>
    451     <b>Note:</b> Use <code>chmod</code> if necessary
    452     to make sure that <code>extensions/external_extensions.json</code>
    453     is world-readable.
    454     </dd>
    455   </dl>
    456 </li>
    457 <li> Add an entry to <code>external_extensions.json</code>
    458 for your extension's ID.  If you are installing from a file, specify the
    459 extension's location and version with fields named "external_crx" and
    460 "external_version".
    461 
    462 Example:
    463 <pre>{
    464   "aaaaaaaaaabbbbbbbbbbcccccccccc": {
    465     "external_crx": "/home/share/extension.crx",
    466     "external_version": "1.0"
    467   }
    468 }</pre>
    469 
    470 <p class="note">
    471 <b>Note:</b>
    472 You need to escape
    473 each <code>\</code> character in the location.
    474 For example,
    475 <code>\\server\share\extension.crx</code> would be
    476 <code>"\\\\server\\share\\extension.crx"</code>.
    477 </p>
    478 <p>
    479 If you are installing from an update URL, specify the extension's update URL
    480 with field name "external_update_url".
    481 </p>
    482 Example:
    483 <pre>{
    484   "aaaaaaaaaabbbbbbbbbbcccccccccc": {
    485     "external_update_url": "http://myhost.com/mytestextension/updates.xml"
    486   }
    487 }</pre>
    488 </li>
    489 
    490 <li>Save the JSON file. </li>
    491 <li>Launch Google Chrome and go to <b>chrome://extensions</b>;
    492 you should see the extension listed. </li>
    493 </ol>
    494 
    495 <h2 id="registry">Using the Windows registry</h2>
    496 
    497 <ol>
    498 <li>Make the <code>.crx</code> extension file available
    499 to the machine you want to install the extension on.
    500 (Copy it to a local directory or to a network share 
    501 for example, <code>\\server\share\extension.crx</code>.)
    502 </li>
    503 <li>Find or create the following key in the
    504 registry:
    505 <ul>
    506   <li> 32-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions</code> </li>
    507   <li> 64-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions</code> </li>
    508 </ul>
    509 </li>
    510 
    511 <li>Create a new key (folder)
    512 under the <b>Extensions</b> key with the
    513 same name as the ID of your extension
    514 (for example, <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>).
    515 </li>
    516 <li>Create two string values (<code>REG_SZ</code>) named "path" and "version",
    517   and set them to the extension's location and version.
    518   For example:
    519 <ul>
    520   <li>path: <code>\\server\share\extension.crx</code> </li>
    521   <li>version: <code>1.0</code> </li>
    522 </ul>
    523 </li>
    524 <li>Launch the browser and go to
    525 <b>chrome://extensions</b>; you should
    526 see the extension listed. </li>
    527 </ol>
    528 
    529 <h2 id="updating">Updating and uninstalling</h2>
    530 
    531 <p>Google Chrome scans the metadata entries
    532 in the preferences and registry
    533 each time the browser starts, and makes
    534 any necessary changes to the installed
    535 external extensions. </p>
    536 
    537 <p>To update your extension to a new version,
    538 update the file, and then update the version
    539 in the preferences or registry. </p>
    540 
    541 <p>To uninstall your extension
    542 (for example, if your software is uninstalled),
    543 remove the metadata from the preferences file
    544 or registry. </p>
    545 
    546 <h2 id="faq">FAQ</h2>
    547 
    548 <p>
    549 This section answers common questions about external extensions.
    550 </p>
    551 
    552 <br>
    553 
    554 <p><b>Can I specify a URL as a path to the external extension?</b> </p>
    555 <p>Yes, if you host the extension as explained in
    556 <a href="hosting.html">hosting</a>.
    557 </p>
    558 
    559 <br>
    560 
    561 <p><b>What are some common mistakes when installing with the preferences
    562 file?</b></p>
    563 <ul>
    564   <li>
    565     Not specifying the same id/version
    566     as the one listed in the <code>.crx</code> </li>
    567   <li>
    568     <code>external_extensions.json</code> is in the wrong location </li>
    569   <li>
    570     Syntax error in JSON file
    571     (forgetting to separate entries with comma or
    572     leaving a trailing comma somewhere) </li>
    573   <li>
    574     Extra curly brackets around the top level dictionary </li>
    575   <li>
    576     JSON file entry points to the wrong path
    577     to the <code>.crx</code> (or path specified but no filename) </li>
    578   <li>
    579     Backslashes in UNC path not escaped
    580     (for example, <code>"\\server\share\file"</code> is wrong;
    581     it should be <code>"\\\\server\\share\\extension"</code>) </li>
    582   <li>
    583     Permissions problems on a network share </li>
    584 </ul>
    585 
    586 <br>
    587 
    588 <p><b>What are some common mistakes when installing with the registry?</b> </p>
    589 <ul>
    590   <li>Not specifying the same id/version
    591     as the one listed in the <code>.crx</code> </li>
    592   <li>Key created in the wrong location in the registry </li>
    593   <li>Registry entry points to the wrong path to the <code>.crx</code> file
    594     (or path specified but no filename) </li>
    595   <li>Permissions problems on a network share </li>
    596 </ul>
    597 
    598 <br>
    599 
    600 <p><b>What if the user uninstalls the extension?</b> </p>
    601 <p>If the user uninstalls the extension through the UI, it will no
    602 longer be installed or updated on each startup. In other words, the
    603 external extension is blacklisted. </p>
    604 
    605 <br>
    606 
    607 <p><b>How do I get off the blacklist?</b> </p>
    608 <p>If the user uninstalls your extension, you should respect that
    609 decision. However, if you (the developer) accidentally uninstalled
    610 your extension through the UI,
    611 you can remove the blacklist tag
    612 by installing the extension normally
    613 through the UI, and then uninstalling it. </p>
    614 </div>
    615 
    616         <!-- API PAGE -->
    617         <div class="apiPage" style="display: none; ">
    618         <a name="apiReference"></a>
    619         <h2>API reference: chrome.apiname </h2>
    620 
    621           <!-- PROPERTIES -->
    622           <div class="apiGroup">
    623             <a name="properties"></a>
    624             <h3 id="properties">Properties</h3>
    625 
    626             <div>
    627               <a></a>
    628               <h4>getLastError</h4>
    629               <div class="summary">
    630                 <!-- Note: intentionally longer 80 columns -->
    631                 <span>chrome.extension</span><span>lastError</span>
    632               </div>
    633               <div>
    634               </div>
    635             </div>
    636 
    637           </div> <!-- /apiGroup -->
    638 
    639           <!-- METHODS -->
    640           <div id="methodsTemplate" class="apiGroup">
    641             <a></a>
    642             <h3>Methods</h3>
    643 
    644             <!-- iterates over all functions -->
    645             <div class="apiItem">
    646               <a></a> <!-- method-anchor -->
    647               <h4>method name</h4>
    648 
    649               <div class="summary"><span>void</span>
    650                   <!-- Note: intentionally longer 80 columns -->
    651                   <span>chrome.module.methodName</span>(<span><span>, </span><span></span>
    652                       <var><span></span></var></span>)</div>
    653 
    654               <div class="description">
    655                 <p class="todo">Undocumented.</p>
    656                 <p>
    657                   A description from the json schema def of the function goes here.
    658                 </p>
    659 
    660                 <!-- PARAMETERS -->
    661                 <h4>Parameters</h4>
    662                 <dl>
    663                   <div>
    664                     <div>
    665                     </div>
    666                   </div>
    667                 </dl>
    668 
    669                 <!-- RETURNS -->
    670                 <h4>Returns</h4>
    671                 <dl>
    672                   <div>
    673                     <div>
    674                     </div>
    675                   </div>
    676                 </dl>
    677 
    678                 <!-- CALLBACK -->
    679                 <div>
    680                   <div>
    681                   <h4>Callback function</h4>
    682                   <p>
    683                     The callback <em>parameter</em> should specify a function
    684                     that looks like this:
    685                   </p>
    686                   <p>
    687                     If you specify the <em>callback</em> parameter, it should
    688                     specify a function that looks like this:
    689                   </p>
    690 
    691                   <!-- Note: intentionally longer 80 columns -->
    692                   <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre>
    693                   <dl>
    694                     <div>
    695                       <div>
    696                       </div>
    697                     </div>
    698                   </dl>
    699                   </div>
    700                 </div>
    701 
    702                 <!-- MIN_VERSION -->
    703                 <p>
    704                   This function was added in version <b><span></span></b>.
    705                   If you require this function, the manifest key
    706                   <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
    707                   can ensure that your extension won't be run in an earlier browser version.
    708                 </p>
    709               </div> <!-- /description -->
    710 
    711             </div>  <!-- /apiItem -->
    712 
    713           </div>  <!-- /apiGroup -->
    714 
    715           <!-- EVENTS -->
    716           <div id="eventsTemplate" class="apiGroup">
    717             <a></a>
    718             <h3>Events</h3>
    719             <!-- iterates over all events -->
    720             <div class="apiItem">
    721               <a></a>
    722               <h4>event name</h4>
    723 
    724               <div class="summary">
    725                 <!-- Note: intentionally longer 80 columns -->
    726                 <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>);
    727               </div>
    728 
    729               <div class="description">
    730                 <p class="todo">Undocumented.</p>
    731                 <p>
    732                   A description from the json schema def of the event goes here.
    733                 </p>
    734 
    735                 <!-- PARAMETERS -->
    736                 <div>
    737                   <h4>Parameters</h4>
    738                   <dl>
    739                     <div>
    740                       <div>
    741                       </div>
    742                     </div>
    743                   </dl>
    744                 </div>
    745               </div> <!-- /decription -->
    746 
    747             </div> <!-- /apiItem -->
    748 
    749           </div> <!-- /apiGroup -->
    750 
    751           <!-- TYPES -->
    752           <div class="apiGroup">
    753             <a name="types"></a>
    754             <h3 id="types">Types</h3>
    755 
    756             <!-- iterates over all types -->
    757             <div class="apiItem">
    758               <a></a>
    759               <h4>type name</h4>
    760 
    761               <div>
    762               </div>
    763 
    764             </div> <!-- /apiItem -->
    765 
    766           </div> <!-- /apiGroup -->
    767 
    768         </div> <!-- /apiPage -->
    769       </div> <!-- /gc-pagecontent -->
    770     </div> <!-- /g-section -->
    771   </div> <!-- /codesiteContent -->
    772     <div id="gc-footer" --="">
    773       <div class="text">
    774   <p>
    775   Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>,
    776   the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
    777   Attribution 3.0 License</a>, and code samples are licensed under the
    778   <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
    779   </p>
    780   <p>
    781   2011 Google
    782   </p>
    783 
    784 <!-- begin analytics -->
    785 <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
    786 <script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>
    787 
    788 <script type="text/javascript">
    789   // chrome doc tracking
    790   try {
    791     var engdocs = _gat._getTracker("YT-10763712-2");
    792     engdocs._trackPageview();
    793   } catch(err) {}
    794 
    795   // code.google.com site-wide tracking
    796   try {
    797     _uacct="UA-18071-1";
    798     _uanchor=1;
    799     _uff=0;
    800     urchinTracker();
    801   }
    802   catch(e) {/* urchinTracker not available. */}
    803 </script>
    804 <!-- end analytics -->
    805       </div>
    806     </div> <!-- /gc-footer -->
    807   </div> <!-- /gc-container -->
    808 </body></html>
    809