diff options
author | kathyw@chromium.org <kathyw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-11 16:24:01 +0000 |
---|---|---|
committer | kathyw@chromium.org <kathyw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-11 16:24:01 +0000 |
commit | 2051c9f2b70af5f51747da381c314f60bd0d8c8f (patch) | |
tree | cf3288afef898a1f87395ff8c5e17b58d013c200 | |
parent | 2143216d0f3858e34d8057473002df126c11c133 (diff) | |
download | chromium_src-2051c9f2b70af5f51747da381c314f60bd0d8c8f.zip chromium_src-2051c9f2b70af5f51747da381c314f60bd0d8c8f.tar.gz chromium_src-2051c9f2b70af5f51747da381c314f60bd0d8c8f.tar.bz2 |
Update the generated doc.
TBR=zelidrag
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/7004023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84988 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/common/extensions/api/extension_api.json | 1 | ||||
-rw-r--r-- | chrome/common/extensions/docs/api_index.html | 2 | ||||
-rw-r--r-- | chrome/common/extensions/docs/examples/extensions/imageinfo.zip | bin | 45362 -> 44324 bytes | |||
-rw-r--r-- | chrome/common/extensions/docs/experimental.webInspector.audits.html | 3 | ||||
-rw-r--r-- | chrome/common/extensions/docs/experimental.webInspector.panels.html | 3 | ||||
-rw-r--r-- | chrome/common/extensions/docs/experimental.webInspector.resources.html | 3 | ||||
-rw-r--r-- | chrome/common/extensions/docs/fileBrowserHandler.html | 1019 | ||||
-rw-r--r-- | chrome/common/extensions/docs/images/filebrowserhandler.png | bin | 0 -> 119323 bytes | |||
-rw-r--r-- | chrome/common/extensions/docs/manifest.html | 1 | ||||
-rw-r--r-- | chrome/common/extensions/docs/samples.html | 2 | ||||
-rw-r--r-- | chrome/common/extensions/docs/samples.json | 3 | ||||
-rw-r--r-- | chrome/common/extensions/docs/static/fileBrowserHandler.html | 157 | ||||
-rw-r--r-- | chrome/common/extensions/docs/static/manifest.html | 1 |
13 files changed, 1186 insertions, 9 deletions
diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index ce35a17..36d28b4 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -4785,7 +4785,6 @@ }, { "namespace":"fileBrowserHandler", - "nodoc": "true", "types": [ { "id": "FileHandlerExecuteEventDetails", diff --git a/chrome/common/extensions/docs/api_index.html b/chrome/common/extensions/docs/api_index.html index 8c23cdd..864955c 100644 --- a/chrome/common/extensions/docs/api_index.html +++ b/chrome/common/extensions/docs/api_index.html @@ -342,7 +342,7 @@ Here are the supported chrome.* APIs: </p> <ul> - <li><a href="bookmarks.html" js="">bookmarks</a></li><li><a href="browserAction.html" js="">browserAction</a></li><li><a href="contextMenus.html" js="">contextMenus</a></li><li><a href="cookies.html" js="">cookies</a></li><li><a href="extension.html" js="">extension</a></li><li><a href="history.html" js="">history</a></li><li><a href="i18n.html" js="">i18n</a></li><li><a href="idle.html" js="">idle</a></li><li><a href="management.html" js="">management</a></li><li><a href="omnibox.html" js="">omnibox</a></li><li><a href="pageAction.html" js="">pageAction</a></li><li><a href="tabs.html" js="">tabs</a></li><li><a href="windows.html" js="">windows</a></li> + <li><a href="bookmarks.html" js="">bookmarks</a></li><li><a href="browserAction.html" js="">browserAction</a></li><li><a href="contextMenus.html" js="">contextMenus</a></li><li><a href="cookies.html" js="">cookies</a></li><li><a href="extension.html" js="">extension</a></li><li><a href="fileBrowserHandler.html" js="">fileBrowserHandler</a></li><li><a href="history.html" js="">history</a></li><li><a href="i18n.html" js="">i18n</a></li><li><a href="idle.html" js="">idle</a></li><li><a href="management.html" js="">management</a></li><li><a href="omnibox.html" js="">omnibox</a></li><li><a href="pageAction.html" js="">pageAction</a></li><li><a href="tabs.html" js="">tabs</a></li><li><a href="windows.html" js="">windows</a></li> </ul> <h2 id="experimental">Experimental APIs</h2> diff --git a/chrome/common/extensions/docs/examples/extensions/imageinfo.zip b/chrome/common/extensions/docs/examples/extensions/imageinfo.zip Binary files differindex 4a61c1d..b35a91e 100644 --- a/chrome/common/extensions/docs/examples/extensions/imageinfo.zip +++ b/chrome/common/extensions/docs/examples/extensions/imageinfo.zip diff --git a/chrome/common/extensions/docs/experimental.webInspector.audits.html b/chrome/common/extensions/docs/experimental.webInspector.audits.html index 2274253..69c6552 100644 --- a/chrome/common/extensions/docs/experimental.webInspector.audits.html +++ b/chrome/common/extensions/docs/experimental.webInspector.audits.html @@ -16,8 +16,7 @@ <script type="text/javascript" src="js/api_page_generator.js"></script> <script type="text/javascript" src="js/bootstrap.js"></script> <script type="text/javascript" src="js/sidebar.js"></script> - <title>experimental.webInspector.audits -API - Google Chrome Extensions - Google Code</title></head> + <title>experimental.webInspector.audits API - Google Chrome Extensions - Google Code</title></head> <body> <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. diff --git a/chrome/common/extensions/docs/experimental.webInspector.panels.html b/chrome/common/extensions/docs/experimental.webInspector.panels.html index 9548562..d27e31b 100644 --- a/chrome/common/extensions/docs/experimental.webInspector.panels.html +++ b/chrome/common/extensions/docs/experimental.webInspector.panels.html @@ -16,8 +16,7 @@ <script type="text/javascript" src="js/api_page_generator.js"></script> <script type="text/javascript" src="js/bootstrap.js"></script> <script type="text/javascript" src="js/sidebar.js"></script> - <title>experimental.webInspector.panels -API - Google Chrome Extensions - Google Code</title></head> + <title>experimental.webInspector.panels API - Google Chrome Extensions - Google Code</title></head> <body> <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. diff --git a/chrome/common/extensions/docs/experimental.webInspector.resources.html b/chrome/common/extensions/docs/experimental.webInspector.resources.html index fbb07fa..c0f9136 100644 --- a/chrome/common/extensions/docs/experimental.webInspector.resources.html +++ b/chrome/common/extensions/docs/experimental.webInspector.resources.html @@ -16,8 +16,7 @@ <script type="text/javascript" src="js/api_page_generator.js"></script> <script type="text/javascript" src="js/bootstrap.js"></script> <script type="text/javascript" src="js/sidebar.js"></script> - <title>experimental.webInspector.resources -API - Google Chrome Extensions - Google Code</title></head> + <title>experimental.webInspector.resources API - Google Chrome Extensions - Google Code</title></head> <body> <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. diff --git a/chrome/common/extensions/docs/fileBrowserHandler.html b/chrome/common/extensions/docs/fileBrowserHandler.html new file mode 100644 index 0000000..5a4cff5 --- /dev/null +++ b/chrome/common/extensions/docs/fileBrowserHandler.html @@ -0,0 +1,1019 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>chrome.fileBrowserHandler - Google Chrome Extensions - Google Code</title></head> + <body> <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 style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></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> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </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"> + <tbody><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> + </tbody></table> + + <div id="codesiteContent" class=""> + + <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"> + <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">chrome.fileBrowserHandler</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li> + <a href="#manifest">Manifest</a> + <ol> + <li style="display: none; "> + <a>h3Name</a> + </li> + </ol> + </li><li> + <a href="#code">Implementing a file browser handler</a> + <ol> + <li style="display: none; "> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: chrome.fileBrowserHandler</a> + <ol> + <li style="display: none; "> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-anchor">propertyName</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a>Methods</a> + <ol> + <li> + <a href="#method-anchor">methodName</a> + </li> + </ol> + </li> + <li> + <a href="#global-events">Events</a> + <ol> + <li> + <a href="#event-onExecute">onExecute</a> + </li> + </ol> + </li> + <li> + <a href="#types">Types</a> + <ol> + <li> + <a href="#type-FileHandlerExecuteEventDetails">FileHandlerExecuteEventDetails</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary" style="display: none; "> + 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"><!-- BEGIN AUTHORED CONTENT --> +<p id="classSummary"> +Use the <code>chrome.fileBrowserHandler</code> module to +extend the Google Chrome OS file browser. +For example, you can use this API +to enable users to upload files to your website. +</p> + +<p class="caution"> +<b>Important:</b> +This API works <b>only on ChromeOS</b>. +</p> + +<p> +The Chrome OS file browser comes up when +the user either presses Ctrl+M +or connects an external storage device, +such as an SD card, USB key, external drive, or digital camera. +Besides showing the files on external devices, +the file browser can also display files +that the user has previously saved to the system. +</p> + +<p> +When the user selects one or more files, +the file browser adds buttons +representing the valid handlers for those files. +For example, in the following screenshot, +selecting a file with a ".jpg" suffix +results in an "Upload to Picasa" button that the user can click. +</p> + +<p> +<img src="images/filebrowserhandler.png" width="640" height="400" alt="file browser screenshot"> +</p> + + +<h2 id="manifest">Manifest</h2> + +<p> +You must declare the "fileBrowserHandler" permission +in the <a href="manifest.html">extension manifest</a>, +and you must use the "file_browser_handlers" field +to register the extension as a handler of at least one file type. +You should also provide a 16x16 icon +to be displayed on the button. +For example: +</p> + +<pre>{ + "name": "My extension", + ... + <b>"file_browser_handlers"</b>: [ + { + <b>"id"</b>: "upload", + <b>"default_title"</b>: "Save to Gallery", <em>// What the button will display</em> + <b>"file_filters"</b>: [ + "filesystem:*.jpg", <em>// To match all files, use "filesystem:*.*"</em> + "filesystem:*.jpeg", + "filesystem:*.png" + ] + } + ], + "permissions" : [ + <b>"fileBrowserHandler"</b> + ], + "icons": { <b>"16"</b>: "icon16.png", + "48": "icon48.png", + "128": "icon128.png" }, + ... +}</pre> + +<p class="note"> +<b>Note:</b> +You can specify locale-specific strings for the value of "default_title". +See <a href="i18n.html">Internationalization (i18n)</a> for details. +</p> + +<h2 id="code">Implementing a file browser handler</h2> + +<p> +To use this API, +you must implement a function that handles the <code>onExecute</code> event +of <code>chrome.fileBrowserHandler</code>. +Your function will be called whenever the user clicks the button +that represents your file browser handler. +In your function, use the HTML5 +<a href="http://www.html5rocks.com/tutorials/file/filesystem/">FileSystem API</a> +to get access to the file contents. +Here is an example: +</p> + +<pre><em>//In background.html:</em> +chrome.fileBrowserHandler.onExecute.addListener(function(id, details) { + if (id == 'upload') { + var fileEntries = details.entries; + for (var i = 0, entry; entry = fileEntries[i]; ++i) { + entry.file(function(file) { + <em>// send file somewhere</em> + }); + } + } +}); +</pre> + +<p> +Your event handler is passed two arguments: +</p> + +<dl> + <dt> id </dt> + <dd> The "id" value from the manifest file. + If your extension implements multiple handlers, + you can check the <code>id</code> value + to see which handler has been triggered. + </dd> + <dt> details </dt> + <dd> An object describing the event. + You can get the file or files that the user has selected + from the <code>entries</code> field of this object, + which is an array of + FileSystem <code>Entry</code> objects. + </dd> +<p></p> + + +<!-- +<h2 id="manifest_details">Manifest details</h2> + +<p class="authornote"> +{PENDING: give details about "id" and "default_title". +It should be unique within your extension -- don't worry about other extensions. +"default_title" implies that you can change the title, +but you can't aside from internationalizing it. +</p> + +<p class="authornote"> +{PENDING: give details about the file_filters entry. +File filters are currently case-sensitive, but we plan to change that. +Mention <code>filesystem:*.*</code>. +</p> +--> + +<!-- +<h2 id="examples">Examples</h2> + +<p> +For examples of using this API, see ... +For other examples and for help in viewing the source code, see +<a href="samples.html">Samples</a>. +</p> +--> + +<!-- END AUTHORED CONTENT --> +</dl></div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: chrome.fileBrowserHandler</h2> + + <!-- PROPERTIES --> + <div class="apiGroup" style="display: none; "> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a></a> + <h4>getLastError</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.extension</span><span>lastError</span> + </div> + <div> + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a></a> <!-- method-anchor --> + <h4>method name</h4> + + <div class="summary"><span>void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.module.methodName</span>(<span><span>, </span><span></span> + <var><span></span></var></span>)</div> + + <div class="description"> + <p class="todo">Undocumented.</p> + <p> + A description from the json schema def of the function goes here. + </p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + 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>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p> + This function was added in version <b><span></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"> + <a name="global-events"></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-onExecute"></a> + <h4>onExecute</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.fileBrowserHandler.</span><span>onExecute</span><span class="subdued">.addListener</span>(function(<span>string id, FileHandlerExecuteEventDetails details</span>) <span class="subdued">{...}</span><span></span>)); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when file system action is executed from ChromeOS file browser.</p> + + <!-- LISTENER PARAMETERS --> + <div> + <h4>Listener parameters</h4> + <dl> + <div> + <div> + <dt> + <var>id</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>File browser action id as specified in the listener component's manifest.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></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 style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>details</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="fileBrowserHandler.html#type-FileHandlerExecuteEventDetails">FileHandlerExecuteEventDetails</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>File handler execute event details.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></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 style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + + <!-- EXTRA PARAMETERS --> + <div style="display: none; "> + <h4>Extra parameters to addListener</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + + <!-- LISTENER RETURN VALUE --> + <h4 style="display: none; ">Listener returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + </div> <!-- /description --> + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup"> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a name="type-FileHandlerExecuteEventDetails"></a> + <h4>FileHandlerExecuteEventDetails</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Event details payload for fileBrowserHandler.onExecute event.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></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> + <dl> + <div> + <div> + <dt> + <var>entries</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>any</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Array of Entry instances representing files that are targets of this action (selected in ChromeOS file browser).</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></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 style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>tab_id</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>integer</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The ID of the tab that raised this event. Tab IDs are unique within a browser session.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></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 style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </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 --> +</body></html> diff --git a/chrome/common/extensions/docs/images/filebrowserhandler.png b/chrome/common/extensions/docs/images/filebrowserhandler.png Binary files differnew file mode 100644 index 0000000..746ddad --- /dev/null +++ b/chrome/common/extensions/docs/images/filebrowserhandler.png diff --git a/chrome/common/extensions/docs/manifest.html b/chrome/common/extensions/docs/manifest.html index 82ee32b..ef122c6 100644 --- a/chrome/common/extensions/docs/manifest.html +++ b/chrome/common/extensions/docs/manifest.html @@ -378,6 +378,7 @@ are <b>name</b> and <b>version</b>. "<a href="background_pages.html">background_page</a>": "<em>aFile</em>.html", "<a href="override.html">chrome_url_overrides</a>": {...}, "<a href="content_scripts.html">content_scripts</a>": [...], + "<a href="fileBrowserHandler.html">file_browser_handlers</a>": [...], "<a href="#homepage_url">homepage_url</a>": "http://<em>path/to/homepage</em>", "<a href="#incognito">incognito</a>": "spanning" <em>or</em> "split", "<a href="#key">key</a>": "<em>publicKey</em>", diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html index 3cfe39f..46981e2 100644 --- a/chrome/common/extensions/docs/samples.html +++ b/chrome/common/extensions/docs/samples.html @@ -341,6 +341,8 @@ </span><span> <a href="javascript:void(0);" onclick="setFilter('chrome.extension', this)">chrome.extension</a><span>, </span> </span><span> + <a href="javascript:void(0);" onclick="setFilter('chrome.fileBrowserHandler', this)">chrome.fileBrowserHandler</a><span>, </span> + </span><span> <a href="javascript:void(0);" onclick="setFilter('chrome.history', this)">chrome.history</a><span>, </span> </span><span> <a href="javascript:void(0);" onclick="setFilter('chrome.i18n', this)">chrome.i18n</a><span>, </span> diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json index a179644..8763ea3 100644 --- a/chrome/common/extensions/docs/samples.json +++ b/chrome/common/extensions/docs/samples.json @@ -94,6 +94,7 @@ "chrome.extension.onRequestExternal": "extension.html#event-onRequestExternal", "chrome.extension.sendRequest": "extension.html#method-sendRequest", "chrome.extension.setUpdateUrlData": "extension.html#method-setUpdateUrlData", + "chrome.fileBrowserHandler.onExecute": "fileBrowserHandler.html#event-onExecute", "chrome.history.addUrl": "history.html#method-addUrl", "chrome.history.deleteAll": "history.html#method-deleteAll", "chrome.history.deleteRange": "history.html#method-deleteRange", @@ -1036,7 +1037,7 @@ "info.html", "manifest.json" ], - "source_hash": "c746d9114348f4b414c1ec05e988e2807feb963a", + "source_hash": "672f49ed8edbe0829c7ba5a1d890b4440b157991", "zip_path": "examples\/extensions\/imageinfo.zip" }, { diff --git a/chrome/common/extensions/docs/static/fileBrowserHandler.html b/chrome/common/extensions/docs/static/fileBrowserHandler.html new file mode 100644 index 0000000..f60f750 --- /dev/null +++ b/chrome/common/extensions/docs/static/fileBrowserHandler.html @@ -0,0 +1,157 @@ +<!-- BEGIN AUTHORED CONTENT --> +<p id="classSummary"> +Use the <code>chrome.fileBrowserHandler</code> module to +extend the Google Chrome OS file browser. +For example, you can use this API +to enable users to upload files to your website. +</p> + +<p class="caution"> +<b>Important:</b> +This API works <b>only on ChromeOS</b>. +</p> + +<p> +The Chrome OS file browser comes up when +the user either presses Ctrl+M +or connects an external storage device, +such as an SD card, USB key, external drive, or digital camera. +Besides showing the files on external devices, +the file browser can also display files +that the user has previously saved to the system. +</p> + +<p> +When the user selects one or more files, +the file browser adds buttons +representing the valid handlers for those files. +For example, in the following screenshot, +selecting a file with a ".jpg" suffix +results in an "Upload to Picasa" button that the user can click. +</p> + +<p> +<img src="images/filebrowserhandler.png" + width="640" height="400" alt="file browser screenshot" /> +</p> + + +<h2 id="manifest">Manifest</h2> + +<p> +You must declare the "fileBrowserHandler" permission +in the <a href="manifest.html">extension manifest</a>, +and you must use the "file_browser_handlers" field +to register the extension as a handler of at least one file type. +You should also provide a 16x16 icon +to be displayed on the button. +For example: +</p> + +<pre> +{ + "name": "My extension", + ... + <b>"file_browser_handlers"</b>: [ + { + <b>"id"</b>: "upload", + <b>"default_title"</b>: "Save to Gallery", <em>// What the button will display</em> + <b>"file_filters"</b>: [ + "filesystem:*.jpg", <em>// To match all files, use "filesystem:*.*"</em> + "filesystem:*.jpeg", + "filesystem:*.png" + ] + } + ]</b>, + "permissions" : [ + <b>"fileBrowserHandler"</b> + ], + "icons": { <b>"16"</b>: "icon16.png", + "48": "icon48.png", + "128": "icon128.png" }, + ... +}</pre> + +<p class="note"> +<b>Note:</b> +You can specify locale-specific strings for the value of "default_title". +See <a href="i18n.html">Internationalization (i18n)</a> for details. +</p> + +<h2 id="code">Implementing a file browser handler</h2> + +<p> +To use this API, +you must implement a function that handles the <code>onExecute</code> event +of <code>chrome.fileBrowserHandler</code>. +Your function will be called whenever the user clicks the button +that represents your file browser handler. +In your function, use the HTML5 +<a href="http://www.html5rocks.com/tutorials/file/filesystem/">FileSystem API</a> +to get access to the file contents. +Here is an example: +</p> + +<pre> +<em>//In background.html:</em> +chrome.fileBrowserHandler.onExecute.addListener(function(id, details) { + if (id == 'upload') { + var fileEntries = details.entries; + for (var i = 0, entry; entry = fileEntries[i]; ++i) { + entry.file(function(file) { + <em>// send file somewhere</em> + }); + } + } +}); +</pre> + +<p> +Your event handler is passed two arguments: +</p> + +<dl> + <dt> id </dt> + <dd> The "id" value from the manifest file. + If your extension implements multiple handlers, + you can check the <code>id</code> value + to see which handler has been triggered. + </dd> + <dt> details </dt> + <dd> An object describing the event. + You can get the file or files that the user has selected + from the <code>entries</code> field of this object, + which is an array of + FileSystem <code>Entry</code> objects. + </dd> +</p> + + +<!-- +<h2 id="manifest_details">Manifest details</h2> + +<p class="authornote"> +{PENDING: give details about "id" and "default_title". +It should be unique within your extension -- don't worry about other extensions. +"default_title" implies that you can change the title, +but you can't aside from internationalizing it. +</p> + +<p class="authornote"> +{PENDING: give details about the file_filters entry. +File filters are currently case-sensitive, but we plan to change that. +Mention <code>filesystem:*.*</code>. +</p> +--> + +<!-- +<h2 id="examples">Examples</h2> + +<p> +For examples of using this API, see ... +For other examples and for help in viewing the source code, see +<a href="samples.html">Samples</a>. +</p> +--> + +<!-- END AUTHORED CONTENT --> diff --git a/chrome/common/extensions/docs/static/manifest.html b/chrome/common/extensions/docs/static/manifest.html index 878ed38..1130416 100644 --- a/chrome/common/extensions/docs/static/manifest.html +++ b/chrome/common/extensions/docs/static/manifest.html @@ -38,6 +38,7 @@ are <b>name</b> and <b>version</b>. "<a href="background_pages.html">background_page</a>": "<em>aFile</em>.html", "<a href="override.html">chrome_url_overrides</a>": {...}, "<a href="content_scripts.html">content_scripts</a>": [...], + "<a href="fileBrowserHandler.html">file_browser_handlers</a>": [...], "<a href="#homepage_url">homepage_url</a>": "http://<em>path/to/homepage</em>", "<a href="#incognito">incognito</a>": "spanning" <em>or</em> "split", "<a href="#key">key</a>": "<em>publicKey</em>", |