diff options
Diffstat (limited to 'chrome/common/extensions')
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&t13n_langs=en"></script> + <script type="text/javascript" src="https://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> + <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> |