summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/common/extensions')
-rw-r--r--chrome/common/extensions/docs/contentSecurityPolicy.html6
-rw-r--r--chrome/common/extensions/docs/manifest.html69
-rw-r--r--chrome/common/extensions/docs/manifestVersion.html362
-rw-r--r--chrome/common/extensions/docs/static/contentSecurityPolicy.html6
-rw-r--r--chrome/common/extensions/docs/static/manifest.html75
-rw-r--r--chrome/common/extensions/docs/static/manifestVersion.html139
6 files changed, 641 insertions, 16 deletions
diff --git a/chrome/common/extensions/docs/contentSecurityPolicy.html b/chrome/common/extensions/docs/contentSecurityPolicy.html
index db9bdce..e8fd520 100644
--- a/chrome/common/extensions/docs/contentSecurityPolicy.html
+++ b/chrome/common/extensions/docs/contentSecurityPolicy.html
@@ -252,8 +252,10 @@
</p>
<a name="H2-0"></a><h2>Default Policy Restrictions</h2>
<p>
- For packages using <a href="manifest.html#manifest_version">
- <code>manifest_version</code></a> 2, Chrome defines a content security policy
+ Packages that do not define a <a href="manifestVersion.html">
+ <code>manifest_version</code>
+ </a> have no default content security policy. Those that select
+ <code>manifest_version</code> 2, have a default content security policy
of:
</p>
<pre>script-src 'self'; object-src 'self'</pre>
diff --git a/chrome/common/extensions/docs/manifest.html b/chrome/common/extensions/docs/manifest.html
index 3bcfc8d..dc2e83f 100644
--- a/chrome/common/extensions/docs/manifest.html
+++ b/chrome/common/extensions/docs/manifest.html
@@ -226,6 +226,8 @@
<a href="#version">version</a>
</li><li>
<a href="#manifest_version">manifest_version</a>
+ </li><li>
+ <a href="#web_accessible_resources">web_accessible_resources</a>
</li>
</ol>
</li>
@@ -280,7 +282,8 @@ are <b>name</b> and <b>version</b>.
"<a href="#permissions">permissions</a>": [...],
"<a href="npapi.html">plugins</a>": [...],
"<a href="#requirements">requirements</a>": {...},
- "<a href="autoupdate.html">update_url</a>": "http://<em>path/to/updateInfo</em>.xml"
+ "<a href="autoupdate.html">update_url</a>": "http://<em>path/to/updateInfo</em>.xml",
+ "<a href="#web_accessible_resources">web_accessible_resources</a>": [...]
}
</pre>
<a name="H2-1"></a><h2>Field details</h2>
@@ -824,17 +827,71 @@ For example, 1.1.9.9999 is newer than 1.1.
For more information, see
<a href="autoupdate.html">Autoupdating</a>.
</p>
+<!-- [PENDING: Possibly: point to the store/dashboard and make a big deal of the fact that autoupdating is free if you use them.] -->
<h3 id="manifest_version">manifest_version</h3>
<p>
-The version of the manifest format that this extension uses. Currently,
-extensions should use the value <code>2</code> (without quotes):
+One integer specifying the version of the manifest file format your package
+requires. As of Chrome 18, developers <em>should</em> specify <code>2</code>
+(without quotes) to use the format as described by this document:
</p>
<pre>"manifest_version": 2</pre>
<p>
-Future breaking changes to the extension system may require a new version
-number.
+Consider manifest version 1 <em>deprecated</em> as of Chrome 18. Version 2 is
+not yet <em>required</em>, but we will, at some point in the not-too-distant
+future, stop supporting packages using deprecated manifest versions. Extensions,
+applications, and themes that aren't ready to make the jump to the new manifest
+version in Chrome 18 can either explicitly specify version <code>1</code>, or
+leave the key off entirely.
+</p>
+<p>
+The changes between version 1 and version 2 of the manifest file format are
+described in detail in <a href="manifestVersion.html">the
+<code>manifest_version</code> documentation.</a>
+</p>
+<h3 id="web_accessible_resources">web_accessible_resources</h3>
+<p>
+An array of strings specifying the paths (relative to the package root) of
+packaged resources that are expected to be usable in the context of a web page.
+For example, an extension that injects a content script with the intention of
+building up some custom interface for <code>example.com</code> would whitelist
+any resources that interface requires (images, icons, stylesheets, scripts,
+etc.) as follows:
+</p>
+<pre>{
+ ...
+ "web_accessible_resources": [
+ "images/my-awesome-image1.png",
+ "images/my-amazing-icon1.png",
+ "style/double-rainbow.css",
+ "script/double-rainbow.js"
+ ],
+ ...
+}</pre>
+<p>
+These resources would then be available in a webpage via the URL
+<code>chrome-extension://[PACKAGE ID]/[PATH]</code>, which can be generated with
+the <a href="extension.html#method-getURL">
+ <code>chrome.extension.getURL</code>
+</a> method. Whitelisted resources are served with appropriate
+<a href="http://www.w3.org/TR/cors/">CORS</a> headers, so they're available via
+mechanisms like XHR.
+</p>
+<p>
+Injected content scripts themselves do not need to be whitelisted.
+</p>
+<h4>Default Availablility</h4>
+<p>
+Resources inside of packages using <a href="#manifest_version">
+ <code>manifest_version</code>
+</a> 2 or above are <strong>blocked by default</strong>, and must be whitelisted
+for use via this property.
+</p>
+<p>
+Resources inside of packages using <code>manifest_version</code> 1 are available
+by default, but <em>if</em> you do set this property, then it will be treated as
+a complete list of all whitelisted resources. Resources not listed will be
+blocked.
</p>
-<!-- [PENDING: Possibly: point to the store/dashboard and make a big deal of the fact that autoupdating is free if you use them.] -->
</div>
<!-- API PAGE -->
<!-- /apiPage -->
diff --git a/chrome/common/extensions/docs/manifestVersion.html b/chrome/common/extensions/docs/manifestVersion.html
new file mode 100644
index 0000000..cd0b47c
--- /dev/null
+++ b/chrome/common/extensions/docs/manifestVersion.html
@@ -0,0 +1,362 @@
+<!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>Manifest Version - Google Chrome Extensions - Google Code</title></head>
+ <body> <div id="devModeWarning" class="displayModeWarning">
+ 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>
+ <div id="branchWarning" class="displayModeWarning">
+ <span>WARNING: This is the <span id="branchName">BETA</span> documentation.
+ It may not work with the stable release of Chrome.</span>
+ <select id="branchChooser">
+ <option>Choose a different version...
+ </option><option value="">Stable
+ </option><option value="beta">Beta
+ </option><option value="dev">Dev
+ </option><option value="trunk">Trunk
+ </option></select>
+ </div>
+ <div id="unofficialWarning" class="displayModeWarning">
+ <span>WARNING: This is unofficial documentation. It may not work with the
+ current release of Chrome.</span>
+ <button id="goToOfficialDocs">Go to the official docs</button>
+ </div>
+ <div id="gc-container" class="labs">
+ <!-- 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" -->
+ <!-- /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="https://www.google.com/jsapi"></script>
+ <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>
+ <script type="text/javascript" src="https://www.google.com/coop/cse/t13n?form=cse&amp;t13n_langs=en"></script>
+ <script type="text/javascript" src="https://www.google.com/coop/cse/brand?form=cse&amp;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>
+ <li id="so_link">
+ <a href="http://stackoverflow.com/questions/tagged/google-chrome-extension" title="[google-chrome-extension] tag on Stack Overflow">Questions?</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="devtools.html">Developer Tools</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="i18n.html">Internationalization</a></li>
+ <li><a href="messaging.html">Message Passing</a></li>
+ <li><a href="permissions.html">Optional Permissions</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">Manifest Version</h1>
+ </div>
+ <!-- TABLE OF CONTENTS -->
+ <!-- /TABLE OF CONTENTS -->
+ <!-- Standard content lead-in for experimental API pages -->
+ <!-- STATIC CONTENT PLACEHOLDER -->
+ <div id="static"><div id="pageData-name" class="pageData">Manifest Version</div>
+<p>
+ Extensions, themes, and applications are simply bundles of resources, wrapped
+ up with a <a href="manifest.html"><code>manifest.json</code></a> file that
+ describes the package's contents. The format of this file is generally stable,
+ but occasionally breaking changes must be made to address specific issues.
+ Developers should specify which version of the manifest specification their
+ package targets by setting a <code>manifest_version</code> key in their
+ manifests.
+</p>
+<h2>Current Version</h2>
+<p>
+ When targeting Chrome 18 and above, developers should specify
+ <strong><code>'manifest_version': 2</code></strong>:
+</p>
+<pre>{
+ ...,
+ "manifest_version": 2,
+ ...
+}</pre>
+<p>
+ Manifest version 1 is <em>deprecated</em> in Chrome 18 and above, but version
+ 2 is not yet <em>required</em>. Extensions, applications, and themes that
+ aren't ready to make the jump to the new manifest version in Chrome 18 can
+ either explicitly specify version <code>1</code>, or leave the key off
+ entirely.
+</p>
+<p>
+ At some point in the future, support for manifest version 1 will be removed.
+ Ample warning will be provided, beginning with warnings when loading unpacked
+ version 1 extensions, and escalating from there over time.
+</p>
+<h2>Changes between version 1 and 2</h2>
+<ul>
+ <li>
+ <p>
+ A content security policy is set to <code>`script-src 'self'; object-src
+ 'self'</code> by default. This has a variety of impacts on developers,
+ described at length in the <a href="contentSecurityPolicy.html">
+ <code>content_security_policy</code></a> documentation.
+ </p>
+ </li>
+ <li>
+ <p>
+ A package's resources are no longer available by default to external
+ websites (as the <code>src</code> of an image, or a <code>script</code>
+ tag). If you want a website to be able to load a resource contained in
+ your package, you'll need to explicitly whitelist it via the
+ <a href="manifest.html#web_accessible_resources">
+ <code>web_accessible_resources</code>
+ </a> manifest attribute. This is particularly relevant for extensions that
+ build up an interface on a website via injected content scripts.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>background_page</code> property has been replaced with a
+ <code>background</code> property that contains <em>either</em> a
+ <code>scripts</code> or <code>page</code> property. Details are available
+ in the <a href="background_pages.html">Background Pages</a> documentation.
+ </p>
+ </li>
+ <li>
+ <p>
+ A variety of previously deprecated features have been removed entirely:
+ </p>
+ <ul>
+ <li>
+ <p>
+ The <code>page_actions</code> key in the manifest, and the
+ <code>chrome.pageActions</code> API are gone. Use the singular
+ <a href="pageAction.html">
+ <code>page_action</code> and <code>chrome.pageAction</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ <code>chrome.extension.getTabContentses</code> (!!!) and
+ <code>chrome.extension.getExtensionTabs</code> are gone. Use
+ <a href="extension.html#method-getViews">
+ <code>chrome.extension.getViews({ "type": "tab" })</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ <code>Port.tab</code> is gone. Use
+ <a href="extension.html#type-Port"><code>Port.sender</code></a>
+ instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>icons</code> property of <code>page_action</code> has been
+ removed. Use <a href="pageAction.html#manifest">
+ the <code>default_icon</code> property
+ </a> or <a href="pageAction.html#method-setIcon">
+ <code>chrome.pageAction.setIcon</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>name</code> property of <code>page_action</code> has been
+ removed. Use <a href="pageAction.html#manifest">
+ the <code>default_title</code> property
+ </a> or <a href="pageAction.html#method-setTitle">
+ <code>chrome.pageAction.setTitle</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>popup</code> property of <code>page_action</code> has been
+ removed. Use <a href="pageAction.html#manifest">
+ the <code>default_popup</code> property
+ </a> or <a href="pageAction.html#method-setPopup">
+ <code>chrome.pageAction.setPopup</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>default_popup</code> property of <code>page_action</code>
+ can no longer be specified as an object. It must be a string.
+ </p>
+ </li>
+ </ul>
+ </li>
+</ul>
+</div>
+ <!-- API PAGE -->
+ <!-- /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="https://www.google-analytics.com/urchin.js" type="text/javascript"></script>
+<script src="https://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/static/contentSecurityPolicy.html b/chrome/common/extensions/docs/static/contentSecurityPolicy.html
index 5c06052..c67796f 100644
--- a/chrome/common/extensions/docs/static/contentSecurityPolicy.html
+++ b/chrome/common/extensions/docs/static/contentSecurityPolicy.html
@@ -45,8 +45,10 @@
<h2>Default Policy Restrictions</h2>
<p>
- For packages using <a href="manifest.html#manifest_version">
- <code>manifest_version</code></a> 2, Chrome defines a content security policy
+ Packages that do not define a <a href="manifestVersion.html">
+ <code>manifest_version</code>
+ </a> have no default content security policy. Those that select
+ <code>manifest_version</code></a> 2, have a default content security policy
of:
</p>
diff --git a/chrome/common/extensions/docs/static/manifest.html b/chrome/common/extensions/docs/static/manifest.html
index 2e58812..5898ab5 100644
--- a/chrome/common/extensions/docs/static/manifest.html
+++ b/chrome/common/extensions/docs/static/manifest.html
@@ -45,6 +45,7 @@ are <b>name</b> and <b>version</b>.
"<a href="#incognito">incognito</a>": "spanning" <em>or</em> "split",
"<a href="#key">key</a>": "<em>publicKey</em>",
"<a href="#minimum_chrome_version">minimum_chrome_version</a>": "<em>versionString</em>",
+
"<a href="#nacl_modules">nacl_modules</a>": [...],
"<a href="#offline_enabled">offline_enabled</a>": true,
"<a href="omnibox.html">omnibox</a>": { "keyword": "<em>aString</em>" },
@@ -52,7 +53,8 @@ are <b>name</b> and <b>version</b>.
"<a href="#permissions">permissions</a>": [...],
"<a href="npapi.html">plugins</a>": [...],
"<a href="#requirements">requirements</a>": {...},
- "<a href="autoupdate.html">update_url</a>": "http://<em>path/to/updateInfo</em>.xml"
+ "<a href="autoupdate.html">update_url</a>": "http://<em>path/to/updateInfo</em>.xml",
+ "<a href="#web_accessible_resources">web_accessible_resources</a>": [...]
}
</pre>
@@ -670,21 +672,82 @@ For example, 1.1.9.9999 is newer than 1.1.
For more information, see
<a href="autoupdate.html">Autoupdating</a>.
</p>
+<!-- [PENDING: Possibly: point to the store/dashboard and make a big deal of the fact that autoupdating is free if you use them.] -->
<h3 id="manifest_version">manifest_version</h3>
<p>
-The version of the manifest format that this extension uses. Currently,
-extensions should use the value <code>2</code> (without quotes):
+One integer specifying the version of the manifest file format your package
+requires. As of Chrome 18, developers <em>should</em> specify <code>2</code>
+(without quotes) to use the format as described by this document:
</p>
<pre>"manifest_version": 2</pre>
<p>
-Future breaking changes to the extension system may require a new version
-number.
+Consider manifest version 1 <em>deprecated</em> as of Chrome 18. Version 2 is
+not yet <em>required</em>, but we will, at some point in the not-too-distant
+future, stop supporting packages using deprecated manifest versions. Extensions,
+applications, and themes that aren't ready to make the jump to the new manifest
+version in Chrome 18 can either explicitly specify version <code>1</code>, or
+leave the key off entirely.
+</p>
+
+<p>
+The changes between version 1 and version 2 of the manifest file format are
+described in detail in <a href="manifestVersion.html">the
+<code>manifest_version</code> documentation.</a>
</p>
+<h3 id="web_accessible_resources">web_accessible_resources</h3>
-<!-- [PENDING: Possibly: point to the store/dashboard and make a big deal of the fact that autoupdating is free if you use them.] -->
+<p>
+An array of strings specifying the paths (relative to the package root) of
+packaged resources that are expected to be usable in the context of a web page.
+For example, an extension that injects a content script with the intention of
+building up some custom interface for <code>example.com</code> would whitelist
+any resources that interface requires (images, icons, stylesheets, scripts,
+etc.) as follows:
+</p>
+
+<pre>{
+ ...
+ "web_accessible_resources": [
+ "images/my-awesome-image1.png",
+ "images/my-amazing-icon1.png",
+ "style/double-rainbow.css",
+ "script/double-rainbow.js"
+ ],
+ ...
+}</pre>
+
+<p>
+These resources would then be available in a webpage via the URL
+<code>chrome-extension://[PACKAGE ID]/[PATH]</code>, which can be generated with
+the <a href="extension.html#method-getURL">
+ <code>chrome.extension.getURL</code>
+</a> method. Whitelisted resources are served with appropriate
+<a href="http://www.w3.org/TR/cors/">CORS</a> headers, so they're available via
+mechanisms like XHR.
+</p>
+
+<p>
+Injected content scripts themselves do not need to be whitelisted.
+</p>
+
+<h4>Default Availablility</h4>
+
+<p>
+Resources inside of packages using <a href="#manifest_version">
+ <code>manifest_version</code>
+</a> 2 or above are <strong>blocked by default</strong>, and must be whitelisted
+for use via this property.
+</p>
+
+<p>
+Resources inside of packages using <code>manifest_version</code> 1 are available
+by default, but <em>if</em> you do set this property, then it will be treated as
+a complete list of all whitelisted resources. Resources not listed will be
+blocked.
+</p>
diff --git a/chrome/common/extensions/docs/static/manifestVersion.html b/chrome/common/extensions/docs/static/manifestVersion.html
new file mode 100644
index 0000000..0ce6ac1
--- /dev/null
+++ b/chrome/common/extensions/docs/static/manifestVersion.html
@@ -0,0 +1,139 @@
+<div id="pageData-name" class="pageData">Manifest Version</div>
+
+<p>
+ Extensions, themes, and applications are simply bundles of resources, wrapped
+ up with a <a href="manifest.html"><code>manifest.json</code></a> file that
+ describes the package's contents. The format of this file is generally stable,
+ but occasionally breaking changes must be made to address specific issues.
+ Developers should specify which version of the manifest specification their
+ package targets by setting a <code>manifest_version</code> key in their
+ manifests.
+</p>
+
+<h2>Current Version</h2>
+
+<p>
+ When targeting Chrome 18 and above, developers should specify
+ <strong><code>'manifest_version': 2</code></strong>:
+</p>
+
+<pre>{
+ ...,
+ "manifest_version": 2,
+ ...
+}</pre>
+
+<p>
+ Manifest version 1 is <em>deprecated</em> in Chrome 18 and above, but version
+ 2 is not yet <em>required</em>. Extensions, applications, and themes that
+ aren't ready to make the jump to the new manifest version in Chrome 18 can
+ either explicitly specify version <code>1</code>, or leave the key off
+ entirely.
+</p>
+
+<p>
+ At some point in the future, support for manifest version 1 will be removed.
+ Ample warning will be provided, beginning with warnings when loading unpacked
+ version 1 extensions, and escalating from there over time.
+</p>
+
+<h2>Changes between version 1 and 2</h2>
+
+<ul>
+ <li>
+ <p>
+ A content security policy is set to <code>`script-src 'self'; object-src
+ 'self'</code> by default. This has a variety of impacts on developers,
+ described at length in the <a href="contentSecurityPolicy.html">
+ <code>content_security_policy</code></a> documentation.
+ </p>
+ </li>
+ <li>
+ <p>
+ A package's resources are no longer available by default to external
+ websites (as the <code>src</code> of an image, or a <code>script</code>
+ tag). If you want a website to be able to load a resource contained in
+ your package, you'll need to explicitly whitelist it via the
+ <a href="manifest.html#web_accessible_resources">
+ <code>web_accessible_resources</code>
+ </a> manifest attribute. This is particularly relevant for extensions that
+ build up an interface on a website via injected content scripts.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>background_page</code> property has been replaced with a
+ <code>background</code> property that contains <em>either</em> a
+ <code>scripts</code> or <code>page</code> property. Details are available
+ in the <a href="background_pages.html">Background Pages</a> documentation.
+ </p>
+ </li>
+ <li>
+ <p>
+ A variety of previously deprecated features have been removed entirely:
+ </p>
+ <ul>
+ <li>
+ <p>
+ The <code>page_actions</code> key in the manifest, and the
+ <code>chrome.pageActions</code> API are gone. Use the singular
+ <a href="pageAction.html">
+ <code>page_action</code> and <code>chrome.pageAction</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ <code>chrome.extension.getTabContentses</code> (!!!) and
+ <code>chrome.extension.getExtensionTabs</code> are gone. Use
+ <a href="extension.html#method-getViews">
+ <code>chrome.extension.getViews({ "type": "tab" })</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ <code>Port.tab</code> is gone. Use
+ <a href="extension.html#type-Port"><code>Port.sender</code></a>
+ instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>icons</code> property of <code>page_action</code> has been
+ removed. Use <a href="pageAction.html#manifest">
+ the <code>default_icon</code> property
+ </a> or <a href="pageAction.html#method-setIcon">
+ <code>chrome.pageAction.setIcon</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>name</code> property of <code>page_action</code> has been
+ removed. Use <a href="pageAction.html#manifest">
+ the <code>default_title</code> property
+ </a> or <a href="pageAction.html#method-setTitle">
+ <code>chrome.pageAction.setTitle</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>popup</code> property of <code>page_action</code> has been
+ removed. Use <a href="pageAction.html#manifest">
+ the <code>default_popup</code> property
+ </a> or <a href="pageAction.html#method-setPopup">
+ <code>chrome.pageAction.setPopup</code>
+ </a> instead.
+ </p>
+ </li>
+ <li>
+ <p>
+ The <code>default_popup</code> property of <code>page_action</code>
+ can no longer be specified as an object. It must be a string.
+ </p>
+ </li>
+ </ul>
+ </li>
+</ul>