faq.html revision ac1e49eb6695f711d72215fcdf9388548942a00d
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