faq.html revision 3f50c38dc070f4bb515c1b64450dae14f316474e
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>Frequently Asked Questions - 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 <!-- FUNCTION PARAMETERS --> 85 <dd> 86 <div></div> 87 </dd> 88 89 </div> <!-- /VALUE --> 90 91 <div id="functionParametersTemplate"> 92 <h5>Parameters</h5> 93 <dl> 94 <div> 95 <div> 96 </div> 97 </div> 98 </dl> 99 </div> 100 </div> <!-- /SUBTEMPLATES --> 101 102 <a id="top"></a> 103 <div id="skipto"> 104 <a href="#gc-pagecontent">Skip to page content</a> 105 <a href="#gc-toc">Skip to main navigation</a> 106 </div> 107 <!-- API HEADER --> 108 <table id="header" width="100%" cellspacing="0" border="0"> 109 <tbody><tr> 110 <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> 111 <td valign="middle" width="100%" style="padding-left:0.6em;"> 112 <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> 113 <div id="gsc-search-box"> 114 <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> 115 <input type="hidden" name="ie" value="UTF-8"> 116 <input type="text" name="q" value="" size="55"> 117 <input class="gsc-search-button" type="submit" name="sa" value="Search"> 118 <br> 119 <span class="greytext">e.g. "page action" or "tabs"</span> 120 </div> 121 </form> 122 123 <script type="text/javascript" src="http://www.google.com/jsapi"></script> 124 <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> 125 <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> 126 <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> 127 </td> 128 </tr> 129 </tbody></table> 130 131 <div id="codesiteContent" class=""> 132 133 <a id="gc-topnav-anchor"></a> 134 <div id="gc-topnav"> 135 <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> 136 <ul id="home" class="gc-topnav-tabs"> 137 <li id="home_link"> 138 <a href="index.html" title="Google Chrome Extensions home page">Home</a> 139 </li> 140 <li id="docs_link"> 141 <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> 142 </li> 143 <li id="faq_link"> 144 <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> 145 </li> 146 <li id="samples_link"> 147 <a href="samples.html" title="Sample extensions (with source code)">Samples</a> 148 </li> 149 <li id="group_link"> 150 <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> 151 </li> 152 </ul> 153 </div> <!-- end gc-topnav --> 154 155 <div class="g-section g-tpl-170"> 156 <!-- SIDENAV --> 157 <div class="g-unit g-first" id="gc-toc"> 158 <ul> 159 <li><a href="getstarted.html">Getting Started</a></li> 160 <li><a href="overview.html">Overview</a></li> 161 <li><a href="whats_new.html">What's New?</a></li> 162 <li><h2><a href="devguide.html">Developer's Guide</a></h2> 163 <ul> 164 <li>Browser UI 165 <ul> 166 <li><a href="browserAction.html">Browser Actions</a></li> 167 <li><a href="contextMenus.html">Context Menus</a></li> 168 <li><a href="notifications.html">Desktop Notifications</a></li> 169 <li><a href="omnibox.html">Omnibox</a></li> 170 <li><a href="options.html">Options Pages</a></li> 171 <li><a href="override.html">Override Pages</a></li> 172 <li><a href="pageAction.html">Page Actions</a></li> 173 </ul> 174 </li> 175 <li>Browser Interaction 176 <ul> 177 <li><a href="bookmarks.html">Bookmarks</a></li> 178 <li><a href="cookies.html">Cookies</a></li> 179 <li><a href="events.html">Events</a></li> 180 <li><a href="history.html">History</a></li> 181 <li><a href="management.html">Management</a></li> 182 <li><a href="tabs.html">Tabs</a></li> 183 <li><a href="windows.html">Windows</a></li> 184 </ul> 185 </li> 186 <li>Implementation 187 <ul> 188 <li><a href="a11y.html">Accessibility</a></li> 189 <li><a href="background_pages.html">Background Pages</a></li> 190 <li><a href="content_scripts.html">Content Scripts</a></li> 191 <li><a href="xhr.html">Cross-Origin XHR</a></li> 192 <li><a href="idle.html">Idle</a></li> 193 <li><a href="i18n.html">Internationalization</a></li> 194 <li><a href="messaging.html">Message Passing</a></li> 195 <li><a href="npapi.html">NPAPI Plugins</a></li> 196 </ul> 197 </li> 198 <li>Finishing 199 <ul> 200 <li><a href="hosting.html">Hosting</a></li> 201 <li><a href="external_extensions.html">Other Deployment Options</a></li> 202 </ul> 203 </li> 204 </ul> 205 </li> 206 <li><h2><a href="apps.html">Packaged Apps</a></h2></li> 207 <li><h2><a href="tutorials.html">Tutorials</a></h2> 208 <ul> 209 <li><a href="tut_debugging.html">Debugging</a></li> 210 <li><a href="tut_analytics.html">Google Analytics</a></li> 211 <li><a href="tut_oauth.html">OAuth</a></li> 212 </ul> 213 </li> 214 <li><h2>Reference</h2> 215 <ul> 216 <li>Formats 217 <ul> 218 <li><a href="manifest.html">Manifest Files</a></li> 219 <li><a href="match_patterns.html">Match Patterns</a></li> 220 </ul> 221 </li> 222 <li><a href="permission_warnings.html">Permission Warnings</a></li> 223 <li><a href="api_index.html">chrome.* APIs</a></li> 224 <li><a href="api_other.html">Other APIs</a></li> 225 </ul> 226 </li> 227 <li><h2><a href="samples.html">Samples</a></h2></li> 228 <div class="line"> </div> 229 <li><h2>More</h2> 230 <ul> 231 <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> 232 <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> 233 <li><a href="themes.html">Themes</a></li> 234 </ul> 235 </li> 236 </ul> 237 </div> 238 <script> 239 initToggles(); 240 </script> 241 242 <div class="g-unit" id="gc-pagecontent"> 243 <div id="pageTitle"> 244 <h1 class="page_title">Frequently Asked Questions</h1> 245 </div> 246 <!-- TABLE OF CONTENTS --> 247 <div id="toc" style="display: none; "> 248 <h2>Contents</h2> 249 <ol> 250 <li> 251 <a>h2Name</a> 252 <ol> 253 <li> 254 <a>h3Name</a> 255 </li> 256 </ol> 257 </li> 258 <li> 259 <a href="#apiReference">API reference</a> 260 <ol> 261 <li> 262 <a href="#properties">Properties</a> 263 <ol> 264 <li> 265 <a href="#property-anchor">propertyName</a> 266 </li> 267 </ol> 268 </li> 269 <li> 270 <a href="#methods">Methods</a> 271 <ol> 272 <li> 273 <a href="#method-anchor">methodName</a> 274 </li> 275 </ol> 276 </li> 277 <li> 278 <a href="#events">Events</a> 279 <ol> 280 <li> 281 <a href="#event-anchor">eventName</a> 282 </li> 283 </ol> 284 </li> 285 <li> 286 <a href="#types">Types</a> 287 <ol> 288 <li> 289 <a href="#id-anchor">id</a> 290 </li> 291 </ol> 292 </li> 293 </ol> 294 </li> 295 </ol> 296 </div> 297 <!-- /TABLE OF CONTENTS --> 298 299 <!-- Standard content lead-in for experimental API pages --> 300 <p id="classSummary" style="display: none; "> 301 For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. 302 </p> 303 304 <!-- STATIC CONTENT PLACEHOLDER --> 305 <div id="static"><div id="pageData-name" class="pageData">Frequently Asked Questions</div> 306 307 308<!-- <div id="pageData-showTOC" class="pageData">true</div> --> 309 310<p> 311If you don't find an answer to your question here, 312try the 313<a href="http://code.google.com/chrome/webstore/faq.html">Chrome Web Store FAQ</a>, the 314<a href="http://groups.google.com/a/chromium.org/group/chromium-extensions">group</a>, or the 315<a href="http://www.google.com/support/chrome/bin/answer.py?answer=113909">gallery help</a>. 316<!-- PENDING: add a link to store help --> 317</p> 318 319<div id="faq-TOC"> 320 <h4>General</h4> 321 <ul> 322 <li><a href="#faq-gen-01">What are Google Chrome Extensions?</a></li> 323 <li><a href="#faq-gen-02">What technologies are used to write extensions for Chrome?</a></li> 324 <li><a href="#faq-gen-03">Are extensions fetched from the web every time the browser is loaded?</a></li> 325 </ul> 326 <h4>Development</h4> 327 <ul> 328 <li><a href="#faq-dev-01">How can I set up Chrome for extension development?</a></li> 329 <li><a href="#faq-dev-02">Can I make cross-domain Ajax requests in an extension?</a></li> 330 <li><a href="#faq-dev-03">Can I use 3rd party web services in my extension?</a></li> 331 <li><a href="#faq-dev-04">Can I use OAuth in my extensions?</a></li> 332 <li><a href="#faq-dev-05">What UI controls can I create for my extension?</a></li> 333 <li><a href="#faq-dev-06">Can I load DLLs in my extension?</a></li> 334 <li><a href="#faq-dev-07">Can extensions encode/decode JSON data?</a></li> 335 <li><a href="#faq-dev-08">Can I store data locally in my extension?</a></li> 336 <li><a href="#faq-dev-09">How much data can I store in localStorage?</a></li> 337 <li><a href="#faq-dev-10">Can I create an options menu for my application?</a></li> 338 <li><a href="#faq-dev-11">Can two extensions communicate with each other?</a></li> 339 <li><a href="#faq-dev-12">What debugging tools are available to extension developers?</a></li> 340 <li><a href="#faq-dev-13">Can extensions use Google Analytics?</a></li> 341 <li><a href="#faq-dev-14">How do I determine which version of Chrome is deployed to which channel?</a></li> 342 <li><a href="#faq-dev-15">Can I add a content script to chrome:// URLs?</a></li> 343 <li><a href="#faq-dev-16">Why do wildcard matches not work for top level domains (TLDs)?</a></li> 344 </ul> 345 <h4>Features and bugs</h4> 346 <ul> 347 <li><a href="#faq-fea-01">I think I've found a bug! How do I make sure it gets fixed?</a></li> 348 <li><a href="#faq-fea-02">I have a feature request! How can I report it?</a></li> 349 </ul> 350</div> 351 352<h2>General</h2> 353 354<h3 id="faq-gen-01">What are Google Chrome Extensions?</h3> 355<p> 356 Google Chrome Extensions are applications that run inside the 357 Chrome browser and provide additional functionality, integration with third 358 party websites or services, and customized browsing experiences. 359</p> 360 361<h3 id="faq-gen-02">What technologies are used to write extensions for Chrome?</h3> 362<p> 363 Extensions are written using the same standard web 364 technologies that developers use to create websites. HTML is used as a 365 content markup language, CSS is used for styling, and JavaScript for 366 scripting. Because Chrome supports HTML5 and CSS3, developers can 367 use the latest open web technologies such as canvas and CSS animations in 368 their extensions. Extensions also have access to several 369 <a href="http://code.google.com/chrome/extensions/api_other.html">JavaScript APIs</a> 370 that help perform functions like JSON encoding and interacting with the 371 browser. 372</p> 373 374 375<h3 id="faq-gen-03">Are extensions fetched from the web every time the browser is loaded?</h3> 376<p> 377 Extensions are downloaded by the Chrome browser upon install, and 378 are subsequently run off of the local disk in order to speed up 379 performance. However, if a new version of the extension is pushed online, 380 it will be automatically downloaded in the background to any users who 381 have the extension installed. Extensions may also make requests for remote 382 content at any time, in order to interact with a web service or pull new 383 content from the web. 384</p> 385 386 387<h2>Development</h2> 388 389 390<h3 id="faq-dev-01">How can I set up Chrome for extension development?</h3> 391<p> 392 As long as you are using a version of Chrome that supports 393 extensions, you already have everything you need to start writing an 394 extension of your own. 395 You can start by turning on Developer mode. 396 </p> 397 398 <p> 399 Click the wrench icon 400 <img src="images/toolsmenu.gif" height="29" width="29" alt="" class="nomargin"> 401 and select <b>Extensions</b> from the <b>Tools</b> menu. 402 If there's a "+" next to "Developer mode", 403 click the "+" so it turns into a "-". 404 Now you can reload extensions, 405 load an unpacked directory of files as if it were a packaged extension, 406 and more. For a complete tutorial, see 407 <a href="http://code.google.com/chrome/extensions/getstarted.html">Getting Started</a>. 408</p> 409 410<h3 id="faq-dev-02">Can I make cross-domain Ajax requests in an extension?</h3> 411<p> 412 Yes. Extensions can make cross-domain requests. See 413 <a href="http://code.google.com/chrome/extensions/xhr.html">this page</a> 414 for more information. 415</p> 416 417<h3 id="faq-dev-03">Can I use 3rd party web services in my extension?</h3> 418<p> 419 Yes. Extensions are capable of making cross-domain Ajax 420 requests, so they can call remote APIs directly. APIs that provide data 421 in JSON format are particularly easy to use. 422</p> 423 424<h3 id="faq-dev-04">Can I use OAuth in my extensions?</h3> 425<p> 426 Absolutely, there are extensions that use OAuth to access remote data 427 APIs. Most developers find it convenient to use a 428 <a href="http://unitedheroes.net/OAuthSimple/js/OAuthSimple.js">JavaScript OAuth library</a> 429 in order to simplify the process of signing OAuth requests. 430</p> 431 432<h3 id="faq-dev-05">What UI controls can I create for my extension?</h3> 433<p> 434 Extensions use HTML and CSS to define their user interfaces, so you can use 435 standard form controls to build your UI, or style the interface with CSS, 436 as you would a web page. Additionally, your extension may add buttons 437 to the Chrome browser itself. See 438 <a href="http://code.google.com/chrome/extensions/browserAction.html">browser actions</a> 439 and 440 <a href="http://code.google.com/chrome/extensions/pageAction.html">page actions</a> 441 for more information. 442</p> 443 444<h3 id="faq-dev-06">Can I load DLLs in my extension?</h3> 445<p> 446 Yes, using the 447 <a href="http://code.google.com/chrome/extensions/trunk/npapi.html">NPAPI interface</a>. 448 Because of the possibility for abuse, though, we will review your extension 449 before hosting it in the Google Chrome Extensions Gallery 450 or Chrome Web Store. 451</p> 452 453<h3 id="faq-dev-07">Can extensions encode/decode JSON data?</h3> 454<p> 455 Yes, because V8 (Chrome's JavaScript engine) supports 456 JSON.stringify and JSON.parse natively, you may use these functions in your 457 extensions 458 <a href="http://json.org/js.html">as described here</a> without including 459 any additional JSON libraries in your code. 460</p> 461 462<h3 id="faq-dev-08">Can I store data locally in my extension?</h3> 463<p> 464 Yes, extensions can use <a href="http://dev.w3.org/html5/webstorage/">localStorage</a> 465 to store string data permanently. Using Chrome's built-in JSON 466 functions, you can store complex data structures in localStorage. For 467 extensions that need to execute SQL queries on their stored data, 468 Chrome implements 469 <a href="http://dev.w3.org/html5/webdatabase/">client side SQL databases</a>, 470 which may be used as well. 471</p> 472 473<h3 id="faq-dev-09">How much data can I store in localStorage?</h3> 474<p> 475 Extensions can store up to 5MB of data in localStorage. 476</p> 477 478<h3 id="faq-dev-10">Can I create an options menu for my application?</h3> 479<p> 480 You can let users set options for your extension by creating an 481 <a href="http://code.google.com/chrome/extensions/trunk/options.html">options page</a>, 482 which is a simple HTML page that will be loaded when a user clicks the 483 "options" button for your extension. This page can read and write settings 484 to localStorage, or even send options to a web server so that they can be 485 persisted across browsers. 486</p> 487 488<h3 id="faq-dev-11">Can two extensions communicate with each other?</h3> 489<p> 490 Extensions may pass messages to other extensions. See the 491 <a href="http://code.google.com/chrome/extensions/trunk/messaging.html#external">message passing documentation</a> 492 for more information. 493</p> 494 495<h3 id="faq-dev-12">What debugging tools are available to extension developers?</h3> 496<p> 497 Chrome's built-in developer tools can be used to debug extensions 498 as well as web pages. See this 499 <a href="http://code.google.com/chrome/extensions/tut_debugging.html ">tutorial on debugging extensions</a> 500 for more information. 501</p> 502 503<h3 id="faq-dev-13">Can extensions use Google Analytics?</h3> 504<p> 505 Yes, since extensions are built just like websites, they can use 506 <a href="http://www.google.com/analytics/">Google Analytics</a> to track 507 usage. However, we strongly advise you to modify the tracking code to pull 508 an HTTPS version of the Google Analytics library. See 509 <a href="tut_analytics.html">this tutorial</a> for more information on doing 510 this. 511</p> 512 513<h3 id="faq-dev-14">How do I determine which version of Chrome is deployed to which channel?</h3> 514<p> 515 To determine which version of Chrome is currently available on each 516 of the different platforms, visit 517 <a href="http://omahaproxy.appspot.com">omahaproxy.appspot.com</a>. On that 518 site you will see data in a format similar to: 519</p> 520<pre>cf,dev,#.#.###.#,#.#.###.# 521cf,beta,#.#.###.#,#.#.###.# 522cf,stable,#.#.###.#,#.#.###.# 523linux,dev,#.#.###.#,#.#.###.# 524linux,beta,#.#.###.#,#.#.###.# 525linux,stable,#.#.###.#,#.#.###.# 526mac,dev,#.#.###.#,#.#.###.# 527mac,beta,#.#.###.#,#.#.###.# 528mac,stable,#.#.###.#,#.#.###.# 529win,canary,#.#.###.#,#.#.###.# 530win,dev,#.#.###.#,#.#.###.# 531win,beta,#.#.###.#,#.#.###.# 532win,stable,#.#.###.#,#.#.###.#</pre> 533 534<p> 535 Each line represents a different platform and channel combination. The 536 listed platforms are <code>cf</code> (Google Chrome Frame), 537 <code>linux</code>, <code>mac</code>, and <code>win</code>. The listed 538 channels are <code>canary</code>, <code>dev</code>, <code>beta</code>, 539 and <code>stable</code>. 540 The two four-part numbers at the end of each line represent the range of 541 versions of Chrome currently deployed to that platform-channel 542 combination. 543</p> 544 545<h3 id="faq-dev-15">Can I add a content script to chrome:// URLs?</h3> 546<p> 547 No. The extensions APIs have been designed to minimize backwards 548 compatibility issues that can arise when new versions of the browser are 549 pushed. Allowing content scripts on <code>chrome://</code> 550 URLs would mean that developers would begin to rely on the DOM, CSS, and 551 JavaScript of these pages to stay the same. In the best case, these pages 552 could not be updated as quickly as they are being updated right now. 553 In the worst case, it could mean that an update to one 554 of these pages could cause an extension to break, causing key parts of the 555 browser to stop working for users of that extension. 556</p> 557 558<p> 559 The reason that <a href="override.html">replacing the content</a> 560 hosted at these URLs entirely is 561 allowed is because it forces an extension developer to implement all of the 562 functionality they want without depending on the browser's internal implementation 563 to stay the same. 564</p> 565 566<h3 id="faq-dev-16">Why do wildcard matches not work for top level domains 567 (TLDs)?</h3> 568<p> 569 You cannot use wildcard match patterns like <code>http://google.*/*</code> 570 to match TLDs (like <code>http://google.es</code> and 571 <code>http://google.fr</code>) due to the 572 complexity of actually restricting such a match to only the desired domains. 573</p> 574<p> 575 For the example of <code>http://google.*/*</code>, the Google domains would 576 be matched, but so would <code>http://google.someotherdomain.com</code>. 577 Additionally, many sites do not own all of the TLDs for their 578 domain. For an example, assume you want to use 579 <code>http://example.*/*</code> to match <code>http://example.com</code> and 580 <code>http://example.es</code>, but <code>http://example.net</code> is a 581 hostile site. If your extension has a bug, the hostile site could potentially 582 attack your extension in order to get access to your extension's increased 583 privileges. 584</p> 585<p> 586 You should explicitly enumerate the TLDs that you wish to run 587 your extension on. 588</p> 589 590<h2>Features and bugs</h2> 591 592<h3 id="faq-fea-01">I think I've found a bug! How do I make sure it gets 593 fixed?</h3> 594<p> 595 While developing an extension, you may find behavior that does not 596 match the extensions documentation and may be the result of a bug in 597 Chrome. The best thing to do is to make sure an appropriate issue 598 report is filed, and the Chromium team has enough information to reproduce 599 the behavior. 600</p> 601 602<p>The steps you should follow to ensure this are:</p> 603 604<ol> 605 <li> 606 Come up with a <em>minimal</em> test extension that demonstrates the issue 607 you wish to report. This extension should have as little code as possible 608 to demonstrate the bug—generally this should be 100 lines of 609 code or less. Many times, developers find that they cannot reproduce their 610 issues this way, which is a good indicator that the bug is in their own 611 code. 612 </li> 613 <li> 614 Search the issue tracker at 615 <a href="http://www.crbug.com">http://www.crbug.com</a> to see whether 616 someone has reported a similar issue. Most issues related to 617 extensions are filed under <strong>Feature=Extensions</strong>, so to 618 look for an extension bug related to the 619 chrome.tabs.executeScript function (for example), search for 620 "<code>Feature=Extensions Type=Bug chrome.tabs.executeScript</code>", 621 which will give you 622 <a href="http://code.google.com/p/chromium/issues/list?can=2&q=Feature%3DExtensions+Type%3DBug+chrome.tabs.executeScript&colspec=ID+Stars+Pri+Area+Feature+Type+Status+Summary+Modified+Owner+Mstone+OS&x=mstone&y=area&cells=tiles"> 623 this list of results</a>. 624 </li> 625 <li> 626 If you find a bug that describes your issue, click the star icon to be 627 notified when the bug receives an update. <em>Do not respond to the 628 bug to say "me too" or ask "when will this be fixed?"</em>; such updates 629 can cause hundreds of emails to be sent. Add a comment only if you have 630 information (such as a better test case or a suggested fix) that is likely 631 to be helpful. 632 </li> 633 <li> 634 If you found no appropriate bug to star, file a new issue report at 635 <a href="http://new.crbug.com">http://new.crbug.com</a>. Be as explicit 636 as possible when filling out this form: choose a descriptive title, 637 explain the steps to reproduce the bug, and describe the expected and 638 actual behavior. Attach your test example to the report and add 639 screenshots if appropriate. The easier your report makes it for others 640 to reproduce your issue, the greater chance that your bug will be fixed 641 promptly. 642 </li> 643 <li> 644 Wait for the bug to be updated. Most new bugs are triaged within a week, 645 although it can sometimes take longer for an update. <em>Do not reply 646 to the bug to ask when the issue will be fixed.</em> If your bug has not 647 been modified after two weeks, please post a message to the 648 <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions/topics"> 649 discussion group</a> with a link back to your bug. 650 </li> 651 <li> 652 If you originally reported your bug on the discussion group and were 653 directed to this FAQ entry, reply to your original thread with a link 654 to the bug you starred or reported. This will make it easier for others 655 experiencing the same issue to find the correct bug. 656 </li> 657</ol> 658 659<h3 id="faq-fea-02">I have a feature request! How can I report it?</h3> 660 661<p>If you identify a feature (especially if it's related to an experimental 662 API) that could be added to improve the extension development experience, 663 make sure an appropriate request is filed in the issue tracker.</p> 664 665<p>The steps you should follow to ensure this are:</p> 666 667<ol> 668 <li> 669 Search the issue tracker at 670 <a href="http://www.crbug.com">http://www.crbug.com</a> to see whether 671 someone has requested a similar feature. Most requests related to 672 extensions are filed under <strong>Feature=Extensions</strong>, so to 673 look for an extension feature request related to keyboard shortcuts 674 (for example), search 675 for "<code>Feature=Extensions Type=Feature shortcuts</code>", 676 which will give you 677 <a href="http://code.google.com/p/chromium/issues/list?can=2&q=Feature%3DExtensions+Type%3DFeature+shortcuts&colspec=ID+Stars+Pri+Area+Feature+Type+Status+Summary+Modified+Owner+Mstone+OS&x=mstone&y=area&cells=tiles"> 678 this list of results</a>. 679 </li> 680 <li> 681 If you find a ticket that matches your request, click the star icon to be 682 notified when the bug receives an update. <em>Do not respond to the 683 bug to say "me too" or ask "when will this be implemented?"</em>; such 684 updates can cause hundreds of emails to be sent. 685 </li> 686 <li> 687 If you found no appropriate ticket to star, file a new request at 688 <a href="http://new.crbug.com">http://new.crbug.com</a>. Be as detailed 689 as possible when filling out this form: choose a descriptive title 690 and explain exactly what feature you would like and how you plan to use it. 691 </li> 692 <li> 693 Wait for the ticket to be updated. Most new requests are triaged within a 694 week, although it can sometimes take longer for an update. <em>Do not reply 695 to the ticket to ask when the feature will be added.</em> If your 696 ticket has not been modified after two weeks, please post a message to the 697 <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions/topics"> 698 discussion group</a> with a link back to your request. 699 </li> 700 <li> 701 If you originally reported your request on the discussion group and were 702 directed to this FAQ entry, reply to your original thread with a link 703 to the ticket you starred or opened. This will make it easier for others 704 with the same request to find the correct ticket. 705 </li> 706</ol> 707 708</div> 709 710 <!-- API PAGE --> 711 <div class="apiPage" style="display: none; "> 712 <a name="apiReference"></a> 713 <h2>API reference: chrome.apiname </h2> 714 715 <!-- PROPERTIES --> 716 <div class="apiGroup"> 717 <a name="properties"></a> 718 <h3 id="properties">Properties</h3> 719 720 <div> 721 <a></a> 722 <h4>getLastError</h4> 723 <div class="summary"> 724 <!-- Note: intentionally longer 80 columns --> 725 <span>chrome.extension</span><span>lastError</span> 726 </div> 727 <div> 728 </div> 729 </div> 730 731 </div> <!-- /apiGroup --> 732 733 <!-- METHODS --> 734 <div class="apiGroup" id="methods"> 735 <a name="methods"></a> 736 <h3>Methods</h3> 737 738 <!-- iterates over all functions --> 739 <div class="apiItem"> 740 <a></a> <!-- method-anchor --> 741 <h4>method name</h4> 742 743 <div class="summary"><span>void</span> 744 <!-- Note: intentionally longer 80 columns --> 745 <span>chrome.module.methodName</span>(<span><span>, </span><span></span> 746 <var><span></span></var></span>)</div> 747 748 <div class="description"> 749 <p class="todo">Undocumented.</p> 750 <p> 751 A description from the json schema def of the function goes here. 752 </p> 753 754 <!-- PARAMETERS --> 755 <h4>Parameters</h4> 756 <dl> 757 <div> 758 <div> 759 </div> 760 </div> 761 </dl> 762 763 <!-- RETURNS --> 764 <h4>Returns</h4> 765 <dl> 766 <div> 767 <div> 768 </div> 769 </div> 770 </dl> 771 772 <!-- CALLBACK --> 773 <div> 774 <div> 775 <h4>Callback function</h4> 776 <p> 777 The callback <em>parameter</em> should specify a function 778 that looks like this: 779 </p> 780 <p> 781 If you specify the <em>callback</em> parameter, it should 782 specify a function that looks like this: 783 </p> 784 785 <!-- Note: intentionally longer 80 columns --> 786 <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> 787 <dl> 788 <div> 789 <div> 790 </div> 791 </div> 792 </dl> 793 </div> 794 </div> 795 796 <!-- MIN_VERSION --> 797 <p> 798 This function was added in version <b><span></span></b>. 799 If you require this function, the manifest key 800 <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> 801 can ensure that your extension won't be run in an earlier browser version. 802 </p> 803 </div> <!-- /description --> 804 805 </div> <!-- /apiItem --> 806 807 </div> <!-- /apiGroup --> 808 809 <!-- EVENTS --> 810 <div class="apiGroup"> 811 <a name="events"></a> 812 <h3 id="events">Events</h3> 813 814 <!-- iterates over all events --> 815 <div class="apiItem"> 816 <a></a> 817 <h4>event name</h4> 818 819 <div class="summary"> 820 <!-- Note: intentionally longer 80 columns --> 821 <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>); 822 </div> 823 824 <div class="description"> 825 <p class="todo">Undocumented.</p> 826 <p> 827 A description from the json schema def of the event goes here. 828 </p> 829 830 <!-- PARAMETERS --> 831 <h4>Parameters</h4> 832 <dl> 833 <div> 834 <div> 835 </div> 836 </div> 837 </dl> 838 839 </div> <!-- /decription --> 840 841 </div> <!-- /apiItem --> 842 843 </div> <!-- /apiGroup --> 844 845 <!-- TYPES --> 846 <div class="apiGroup"> 847 <a name="types"></a> 848 <h3 id="types">Types</h3> 849 850 <!-- iterates over all types --> 851 <div class="apiItem"> 852 <a></a> 853 <h4>type name</h4> 854 855 <div> 856 </div> 857 858 </div> <!-- /apiItem --> 859 860 </div> <!-- /apiGroup --> 861 862 </div> <!-- /apiPage --> 863 </div> <!-- /gc-pagecontent --> 864 </div> <!-- /g-section --> 865 </div> <!-- /codesiteContent --> 866 <div id="gc-footer" --=""> 867 <div class="text"> 868 <p> 869 Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, 870 the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons 871 Attribution 3.0 License</a>, and code samples are licensed under the 872 <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. 873 </p> 874 <p> 875 ©2011 Google 876 </p> 877 878<!-- begin analytics --> 879<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> 880<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> 881 882<script type="text/javascript"> 883 // chrome doc tracking 884 try { 885 var engdocs = _gat._getTracker("YT-10763712-2"); 886 engdocs._trackPageview(); 887 } catch(err) {} 888 889 // code.google.com site-wide tracking 890 try { 891 _uacct="UA-18071-1"; 892 _uanchor=1; 893 _uff=0; 894 urchinTracker(); 895 } 896 catch(e) {/* urchinTracker not available. */} 897</script> 898<!-- end analytics --> 899 </div> 900 </div> <!-- /gc-footer --> 901 </div> <!-- /gc-container --> 902</body></html> 903