<div id="gc-container" class="labs">
<div id="devModeWarning">
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.
</div>
<!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION -->
<!-- In particular, sub-templates that recurse, must be used by allowing
jstemplate to make a copy of the template in this section which
are not operated on by way of the jsskip="true" -->
<div jsskip="true" style="display:none">
<!-- VALUE -->
<div id="valueTemplate">
<dt>
<var jsdisplay="$this.name" jscontent="$this.name">paramName</var>
<em>
<!-- TYPE -->
<div style="display:inline">
(
<span class="optional" jsdisplay="optional">optional</span>
<span class="enum" jsdisplay="enum">enumerated</span>
<span id="typeTemplate">
<span jsdisplay="getTypeRef($this)">
<a jsvalues=".href: getTypeRefPage($this) + '#type-' + getTypeRef($this)"
jscontent="getTypeRef($this)"> Type</a>
</span>
<span jsdisplay="!getTypeRef($this)">
<span jsdisplay="isArray($this)">
array of <span jsselect="items"><span transclude="typeTemplate"></span></span>
</span>
<span jsdisplay="!isArray($this)" jscontent="getTypeName($this)">paramType</span>
<span jsdisplay="!isArray($this) && enum" jscontent="getEnumValues(enum, type);"></span>
</span>
</span>
)
</div>
</em>
</dt>
<dd class="todo" jsdisplay="!$this.description">
Undocumented.
</dd>
<dd jsdisplay="$this.description"
jsvalues=".innerHTML:substituteTypeRefs($this.description)">
Description of this parameter from the json schema.
</dd>
<dd jsdisplay="$this.min_version">
This parameter was added in version
<b><span jscontent="$this.min_version"></span></b>.
You must omit this parameter in earlier versions,
and you may omit it in any version. If you require this
parameter, the manifest key
<a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
can ensure that your extension won't be run in an earlier browser version.
</dd>
<!-- OBJECT PROPERTIES -->
<dd jsdisplay="shouldExpandObject($this)">
<dl>
<div jsselect="getPropertyListFromObject($this)">
<div transclude="valueTemplate">
</div>
</div>
</dl>
</dd>
<!-- OBJECT METHODS -->
<dd jsdisplay="$this.type === 'object' &&
$this.functions && $this.functions.length > 0"
jsvalues="$scope:id">
<div transclude="methodsTemplate"></div>
</dd>
<!-- OBJECT EVENT FIELDS -->
<dd jsdisplay="$this.type === 'object' &&
$this.events && $this.events.length > 0"
jsvalues="$scope:id">
<div transclude="eventsTemplate"></div>
</dd>
<!-- FUNCTION PARAMETERS -->
<dd jsdisplay="isFunction($this) && $this.parameters &&
$this.name != 'callback'">
<div transclude="functionParametersTemplate"></div>
</dd>
</div> <!-- /VALUE -->
<div id="functionParametersTemplate">
<h5>Parameters</h5>
<dl>
<div jsselect="$this.parameters">
<div transclude="valueTemplate">
</div>
</div>
</dl>
</div>
</div> <!-- /SUBTEMPLATES -->
<a id="top"></a>
<div id="skipto">
<a href="#gc-pagecontent">Skip to page content</a>
<a href="#gc-toc">Skip to main navigation</a>
</div>
<!-- API HEADER -->
<table id="header" width="100%" cellspacing="0" border="0">
<tr>
<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>
<td valign="middle" width="100%" style="padding-left:0.6em;">
<form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em">
<div id="gsc-search-box">
<input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" value="" size="55" />
<input class="gsc-search-button" type="submit" name="sa" value="Search" />
<br>
<span class="greytext">e.g. "page action" or "tabs"</span>
</div>
</form>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>
<script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script>
</td>
</tr>
</table>
<div id="codesiteContent" jsvalues=".className: showSideNav() ? '' : 'hideSideNav'">
<a id="gc-topnav-anchor"></a>
<div id="gc-topnav">
<h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1>
<ul id="home" class="gc-topnav-tabs">
<li id="home_link">
<a href="index.html" title="Google Chrome Extensions home page">Home</a>
</li>
<li id="docs_link">
<a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a>
</li>
<li id="faq_link">
<a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a>
</li>
<li id="samples_link">
<a href="samples.html" title="Sample extensions (with source code)">Samples</a>
</li>
<li id="group_link">
<a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a>
</li>
</ul>
</div> <!-- end gc-topnav -->
<div class="g-section g-tpl-170">
<!-- SIDENAV -->
<div class="g-unit g-first" id="gc-toc" jsdisplay="showSideNav()">
<ul>
<li><a href="getstarted.html">Getting Started</a></li>
<li><a href="overview.html">Overview</a></li>
<li><a href="whats_new.html">What's New?</a></li>
<li><h2><a href="devguide.html">Developer's Guide</a></h2>
<ul>
<li>Browser UI
<ul>
<li><a href="browserAction.html">Browser Actions</a></li>
<li><a href="contextMenus.html">Context Menus</a></li>
<li><a href="notifications.html">Desktop Notifications</a></li>
<li><a href="omnibox.html">Omnibox</a></li>
<li><a href="options.html">Options Pages</a></li>
<li><a href="override.html">Override Pages</a></li>
<li><a href="pageAction.html">Page Actions</a></li>
</ul>
</li>
<li>Browser Interaction
<ul>
<li><a href="bookmarks.html">Bookmarks</a></li>
<li><a href="cookies.html">Cookies</a></li>
<li><a href="events.html">Events</a></li>
<li><a href="history.html">History</a></li>
<li><a href="management.html">Management</a></li>
<li><a href="tabs.html">Tabs</a></li>
<li><a href="windows.html">Windows</a></li>
</ul>
</li>
<li>Implementation
<ul>
<li><a href="a11y.html">Accessibility</a></li>
<li><a href="background_pages.html">Background Pages</a></li>
<li><a href="content_scripts.html">Content Scripts</a></li>
<li><a href="xhr.html">Cross-Origin XHR</a></li>
<li><a href="idle.html">Idle</a></li>
<li><a href="i18n.html">Internationalization</a></li>
<li><a href="messaging.html">Message Passing</a></li>
<li><a href="npapi.html">NPAPI Plugins</a></li>
</ul>
</li>
<li>Finishing
<ul>
<li><a href="hosting.html">Hosting</a></li>
<li><a href="external_extensions.html">Other Deployment Options</a></li>
</ul>
</li>
</ul>
</li>
<li><h2><a href="apps.html">Packaged Apps</a></h2></li>
<li><h2><a href="tutorials.html">Tutorials</a></h2>
<ul>
<li><a href="tut_debugging.html">Debugging</a></li>
<li><a href="tut_analytics.html">Google Analytics</a></li>
<li><a href="tut_oauth.html">OAuth</a></li>
</ul>
</li>
<li><h2>Reference</h2>
<ul>
<li>Formats
<ul>
<li><a href="manifest.html">Manifest Files</a></li>
<li><a href="match_patterns.html">Match Patterns</a></li>
</ul>
</li>
<li><a href="permission_warnings.html">Permission Warnings</a></li>
<li><a href="api_index.html">chrome.* APIs</a></li>
<li><a href="api_other.html">Other APIs</a></li>
</ul>
</li>
<li><h2><a href="samples.html">Samples</a></h2></li>
<div class="line"> </div>
<li><h2>More</h2>
<ul>
<li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li>
<li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li>
<li><a href="themes.html">Themes</a></li>
</ul>
</li>
</ul>
</div>
<script>
initToggles();
</script>
<div class="g-unit" id="gc-pagecontent">
<div id="pageTitle">
<h1 class="page_title" jscontent="getPageName()">chrome.apiname</h1>
</div>
<!-- TABLE OF CONTENTS -->
<div id="toc" jsdisplay="showPageTOC()">
<h2>Contents</h2>
<ol>
<li jsselect="getStaticTOC()">
<a jscontent="name"
jsvalues=".href:'#' + href">h2Name</a>
<ol>
<li jsselect="$this.children">
<a jscontent="name"
jsvalues=".href:'#' + href">h3Name</a>
</li>
</ol>
</li>
<li jsselect="apiDefinition">
<a href="#apiReference" jscontent="'API reference: ' + getModuleName()">API reference</a>
<ol>
<li jsdisplay="$this.properties">
<a href="#properties">Properties</a>
<ol>
<li jsselect="getPropertyListFromObject($this)">
<a jscontent="name"
jsvalues=".href:'#property-' + name"
href="#property-anchor">propertyName</a>
</li>
</ol>
</li>
<li jsdisplay="functions && functions.length > 0">
<a jsvalues=".href:'#' + getAnchorName('global', 'methods')">Methods</a>
<ol>
<li jsselect="functions.sort(sortByName)"
jsdisplay="!($this.nodoc)">
<a jscontent="name"
jsvalues=".href:'#' + getAnchorName('method', name)"
href="#method-anchor">methodName</a>
</li>
</ol>
</li>
<li jsdisplay="events && events.length > 0">
<a jsvalues=".href:'#' + getAnchorName('global', 'events')">Events</a>
<ol>
<li jsselect="events.sort(sortByName)"
jsdisplay="!($this.nodoc)">
<a jscontent="name"
jsvalues=".href:'#' + getAnchorName('event', name)"
href="#event-anchor">eventName</a>
</li>
</ol>
</li>
<li jsdisplay="types && types.length > 0">
<a href="#types">Types</a>
<ol>
<li jsselect="types.sort(sortByName)">
<a jscontent="id"
jsvalues=".href:'#type-' + id"
href="#id-anchor">id</a>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</div>
<!-- /TABLE OF CONTENTS -->
<!-- Standard content lead-in for experimental API pages -->
<p jsdisplay="isExperimentalAPIPage();" id="classSummary">
For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page.
</p>
<!-- STATIC CONTENT PLACEHOLDER -->
<div id="static"></div>
<!-- API PAGE -->
<div class="apiPage" jsselect="apiDefinition" jsvalues="$scope:''">
<a name="apiReference"></a>
<h2 jscontent="'API reference: ' + getModuleName()">API reference: chrome.apiname </h2>
<!-- PROPERTIES -->
<div jsdisplay="$this.properties" class="apiGroup">
<a name="properties"></a>
<h3 id="properties">Properties</h3>
<div jsselect="getPropertyListFromObject($this)">
<a jsvalues=".name:'property-' + name"></a>
<h4 jscontent="name">getLastError</h4>
<div class="summary">
<!-- Note: intentionally longer 80 columns -->
<span jscontent="getModuleName() + '.'">chrome.extension</span><span jscontent="$this.name">lastError</span>
</div>
<div transclude="valueTemplate">
</div>
</div>
</div> <!-- /apiGroup -->
<!-- METHODS -->
<div id="methodsTemplate" class="apiGroup"
jsdisplay="$this.functions && $this.functions.length > 0">
<a jsvalues=".name:getAnchorName('global', 'methods', $scope)"></a>
<h3 jscontent="$scope ? 'Methods of ' + $scope : 'Methods'">Methods</h3>
<!-- iterates over all functions -->
<div class="apiItem" jsselect="functions.sort(sortByName)"
jsdisplay="!($this.nodoc)">
<a jsvalues=".name:getAnchorName('method', name, $scope)"></a> <!-- method-anchor -->
<h4 jscontent="name">method name</h4>
<div class="summary"><span jsdisplay="returns" jscontent="getTypeName(returns)">void</span>
<!-- Note: intentionally longer 80 columns -->
<span jscontent="getFullyQualifiedFunctionName($scope, $this)">chrome.module.methodName</span>(<span jsselect="parameters" jsvalues="class:optional ? 'optional' : ''"><span jsdisplay="$index">, </span><span jscontent="getTypeName($this)"></span>
<var><span jscontent="$this.name"></span></var></span>)</div>
<div class="description">
<p class="todo" jsdisplay="!description">Undocumented.</p>
<p jsdisplay="description" jsvalues=".innerHTML:description">
A description from the json schema def of the function goes here.
</p>
<!-- PARAMETERS -->
<h4 jsdisplay="$this.parameters && $this.parameters.length > 0">Parameters</h4>
<dl>
<div jsselect="parameters">
<div transclude="valueTemplate">
</div>
</div>
</dl>
<!-- RETURNS -->
<h4 jsdisplay="returns">Returns</h4>
<dl>
<div jsselect="returns">
<div transclude="valueTemplate">
</div>
</div>
</dl>
<!-- CALLBACK -->
<div jsdisplay="hasCallback(parameters)">
<div jsselect="getCallbackParameters(parameters)">
<h4>Callback function</h4>
<p jsdisplay="!$this.optional">
The callback <em>parameter</em> should specify a function
that looks like this:
</p>
<p jsdisplay="$this.optional">
If you specify the <em>callback</em> parameter, it should
specify a function that looks like this:
</p>
<!-- Note: intentionally longer 80 columns -->
<pre>function(<span jscontent="getSignatureString(parameters)">Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre>
<dl>
<div jsselect="parameters">
<div transclude="valueTemplate">
</div>
</div>
</dl>
</div>
</div>
<!-- MIN_VERSION -->
<p jsdisplay="min_version" >
This function was added in version <b><span jscontent="$this.min_version"></span></b>.
If you require this function, the manifest key
<a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
can ensure that your extension won't be run in an earlier browser version.
</p>
</div> <!-- /description -->
</div> <!-- /apiItem -->
</div> <!-- /apiGroup -->
<!-- EVENTS -->
<div id="eventsTemplate" class="apiGroup"
jsdisplay="$this.events && $this.events.length > 0">
<a jsvalues=".name:getAnchorName('global', 'events', $scope)"></a>
<h3 jscontent="$scope ? 'Events of ' + $scope : 'Events'">Events</h3>
<!-- iterates over all events -->
<div class="apiItem" jsselect="$this.events.sort(sortByName)"
jsdisplay="!($this.nodoc)">
<a jsvalues=".name:getAnchorName('event', name, $scope)"></a>
<h4 jscontent="name">event name</h4>
<div class="summary">
<!-- Note: intentionally longer 80 columns -->
<span jscontent="(getObjectName($scope) || getModuleName()) + '.'" class="subdued">chrome.bookmarks</span><span jscontent="name">onEvent</span><span class="subdued">.addListener</span>(function(<span jscontent="getSignatureString($this.parameters)">Type param1, Type param2</span>) <span class="subdued">{...}</span>);
</div>
<div class="description">
<p class="todo" jsdisplay="!description">Undocumented.</p>
<p jsdisplay="description" jsvalues=".innerHTML:description">
A description from the json schema def of the event goes here.
</p>
<!-- PARAMETERS -->
<div jsdisplay="parameters && parameters.length > 0">
<h4>Parameters</h4>
<dl>
<div jsselect="parameters">
<div transclude="valueTemplate">
</div>
</div>
</dl>
</div>
</div> <!-- /decription -->
</div> <!-- /apiItem -->
</div> <!-- /apiGroup -->
<!-- TYPES -->
<div jsdisplay="types && types.length > 0" class="apiGroup">
<a name="types"></a>
<h3 id="types">Types</h3>
<!-- iterates over all types -->
<div jsselect="types.sort(sortByName)" class="apiItem">
<a jsvalues=".name:'type-' + id"></a>
<h4 jscontent="id">type name</h4>
<div transclude="valueTemplate">
</div>
</div> <!-- /apiItem -->
</div> <!-- /apiGroup -->
</div> <!-- /apiPage -->
</div> <!-- /gc-pagecontent -->
</div> <!-- /g-section -->
</div> <!-- /codesiteContent -->
<div id="gc-footer" -->
<div class="text">
<p>
Except as otherwise <a
href="http://code.google.com/policies.html#restrictions">noted</a>,
the content of this page is licensed under the <a rel="license"
href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
Attribution 3.0 License</a>, and code samples are licensed under the
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
©2011 Google
</p>
<!-- begin analytics -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>
<script type="text/javascript">
// chrome doc tracking
try {
var engdocs = _gat._getTracker("YT-10763712-2");
engdocs._trackPageview();
} catch(err) {}
// code.google.com site-wide tracking
try {
_uacct="UA-18071-1";
_uanchor=1;
_uff=0;
urchinTracker();
}
catch(e) {/* urchinTracker not available. */}
</script>
<!-- end analytics -->
</div>
</div> <!-- /gc-footer -->
</div> <!-- /gc-container -->