summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions
diff options
context:
space:
mode:
authorKristian Monsen <kristianm@google.com>2011-05-11 20:53:37 +0100
committerKristian Monsen <kristianm@google.com>2011-05-16 13:54:48 +0100
commit21d179b334e59e9a3bfcaed4c4430bef1bc5759d (patch)
tree64e2bb6da27af6a5c93ca34f6051584aafbfcb9e /chrome/common/extensions
parent0c63f00edd6ed0482fd5cbcea937ca088baf7858 (diff)
downloadexternal_chromium-21d179b334e59e9a3bfcaed4c4430bef1bc5759d.zip
external_chromium-21d179b334e59e9a3bfcaed4c4430bef1bc5759d.tar.gz
external_chromium-21d179b334e59e9a3bfcaed4c4430bef1bc5759d.tar.bz2
Merge Chromium at 10.0.621.0: Initial merge by git.
Change-Id: I070cc91c608dfa4a968a5a54c173260765ac8097
Diffstat (limited to 'chrome/common/extensions')
-rw-r--r--chrome/common/extensions/api/extension_api.json115
-rw-r--r--chrome/common/extensions/docs/a11y.html2
-rw-r--r--chrome/common/extensions/docs/api_index.html2
-rw-r--r--chrome/common/extensions/docs/api_other.html2
-rw-r--r--chrome/common/extensions/docs/apps.html4
-rw-r--r--chrome/common/extensions/docs/autoupdate.html2
-rw-r--r--chrome/common/extensions/docs/background_pages.html2
-rw-r--r--chrome/common/extensions/docs/bookmarks.html2
-rw-r--r--chrome/common/extensions/docs/browserAction.html2
-rw-r--r--chrome/common/extensions/docs/content_scripts.html2
-rw-r--r--chrome/common/extensions/docs/contextMenus.html2
-rw-r--r--chrome/common/extensions/docs/cookies.html2
-rw-r--r--chrome/common/extensions/docs/crx.html2
-rw-r--r--chrome/common/extensions/docs/css/samples.css3
-rw-r--r--chrome/common/extensions/docs/devguide.html2
-rw-r--r--chrome/common/extensions/docs/docs.html2
-rw-r--r--chrome/common/extensions/docs/events.html2
-rw-r--r--chrome/common/extensions/docs/examples/api/bookmarks/basic.zipbin5687 -> 8600 bytes
-rw-r--r--chrome/common/extensions/docs/examples/api/bookmarks/basic/icon.pngbin0 -> 2809 bytes
-rw-r--r--chrome/common/extensions/docs/examples/api/omnibox/simple-example.zipbin1193 -> 1193 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher.zipbin0 -> 24932 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher/browser_action_icon.pngbin0 -> 5563 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher/icon.pngbin0 -> 5397 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json13
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css49
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html32
-rw-r--r--chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js198
-rw-r--r--chrome/common/extensions/docs/examples/extensions/benchmark.zipbin258748 -> 258732 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/benchmark/options.html4
-rw-r--r--chrome/common/extensions/docs/examples/extensions/buildbot.zipbin28099 -> 28652 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/buildbot/bg.html11
-rw-r--r--chrome/common/extensions/docs/examples/extensions/buildbot/manifest.json2
-rw-r--r--chrome/common/extensions/docs/examples/extensions/buildbot/popup.html20
-rw-r--r--chrome/common/extensions/docs/examples/extensions/chrome_search.zipbin5610 -> 5806 bytes
-rw-r--r--chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json4
-rw-r--r--chrome/common/extensions/docs/examples/extensions/imageinfo.zipbin45565 -> 46603 bytes
-rw-r--r--chrome/common/extensions/docs/examples/tutorials/getstarted.zipbin5683 -> 10884 bytes
-rw-r--r--chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zipbin0 -> 5075 bytes
-rw-r--r--chrome/common/extensions/docs/experimental.clipboard.html2
-rw-r--r--chrome/common/extensions/docs/experimental.contextMenus.html2
-rw-r--r--chrome/common/extensions/docs/experimental.cookies.html2
-rw-r--r--chrome/common/extensions/docs/experimental.history.html2
-rw-r--r--chrome/common/extensions/docs/experimental.html2
-rw-r--r--chrome/common/extensions/docs/experimental.idle.html2
-rw-r--r--chrome/common/extensions/docs/experimental.infobars.html2
-rw-r--r--chrome/common/extensions/docs/experimental.processes.html2
-rw-r--r--chrome/common/extensions/docs/experimental.proxy.html38
-rw-r--r--chrome/common/extensions/docs/experimental.sidebar.html2
-rw-r--r--chrome/common/extensions/docs/experimental.webNavigation.html2
-rw-r--r--chrome/common/extensions/docs/experimental.webRequest.html2
-rw-r--r--chrome/common/extensions/docs/extension.html2
-rw-r--r--chrome/common/extensions/docs/external_extensions.html2
-rw-r--r--chrome/common/extensions/docs/faq.html2
-rw-r--r--chrome/common/extensions/docs/getstarted.html3
-rw-r--r--chrome/common/extensions/docs/history.html2
-rw-r--r--chrome/common/extensions/docs/hosting.html2
-rw-r--r--chrome/common/extensions/docs/i18n-messages.html2
-rw-r--r--chrome/common/extensions/docs/i18n.html2
-rw-r--r--chrome/common/extensions/docs/idle.html2
-rw-r--r--chrome/common/extensions/docs/images/perms-hw1.pngbin20247 -> 32298 bytes
-rw-r--r--chrome/common/extensions/docs/images/perms-hw2.pngbin22511 -> 37899 bytes
-rw-r--r--chrome/common/extensions/docs/index.html2
-rw-r--r--chrome/common/extensions/docs/management.html4
-rw-r--r--chrome/common/extensions/docs/manifest.html7
-rw-r--r--chrome/common/extensions/docs/match_patterns.html2
-rw-r--r--chrome/common/extensions/docs/messaging.html2
-rw-r--r--chrome/common/extensions/docs/notifications.html2
-rw-r--r--chrome/common/extensions/docs/npapi.html2
-rw-r--r--chrome/common/extensions/docs/omnibox.html2
-rw-r--r--chrome/common/extensions/docs/options.html2
-rw-r--r--chrome/common/extensions/docs/override.html2
-rw-r--r--chrome/common/extensions/docs/overview.html2
-rw-r--r--chrome/common/extensions/docs/packaging.html2
-rw-r--r--chrome/common/extensions/docs/pageAction.html11
-rw-r--r--chrome/common/extensions/docs/permission_warnings.html64
-rw-r--r--chrome/common/extensions/docs/samples.html49
-rw-r--r--chrome/common/extensions/docs/samples.json36
-rw-r--r--chrome/common/extensions/docs/server/chromeextensionsdocs.py5
-rw-r--r--chrome/common/extensions/docs/static/apps.html2
-rw-r--r--chrome/common/extensions/docs/static/getstarted.html1
-rw-r--r--chrome/common/extensions/docs/static/manifest.html5
-rw-r--r--chrome/common/extensions/docs/static/pageAction.html9
-rw-r--r--chrome/common/extensions/docs/static/permission_warnings.html66
-rw-r--r--chrome/common/extensions/docs/static/themes.html8
-rw-r--r--chrome/common/extensions/docs/static/tut_debugging.html2
-rw-r--r--chrome/common/extensions/docs/tabs.html2
-rw-r--r--chrome/common/extensions/docs/template/api_template.html2
-rw-r--r--chrome/common/extensions/docs/themes.html10
-rw-r--r--chrome/common/extensions/docs/tut_analytics.html2
-rw-r--r--chrome/common/extensions/docs/tut_debugging.html4
-rw-r--r--chrome/common/extensions/docs/tut_oauth.html2
-rw-r--r--chrome/common/extensions/docs/tutorials.html2
-rw-r--r--chrome/common/extensions/docs/whats_new.html2
-rw-r--r--chrome/common/extensions/docs/windows.html60
-rw-r--r--chrome/common/extensions/docs/xhr.html2
-rw-r--r--chrome/common/extensions/extension.cc108
-rw-r--r--chrome/common/extensions/extension.h50
-rw-r--r--chrome/common/extensions/extension_constants.cc20
-rw-r--r--chrome/common/extensions/extension_constants.h18
-rw-r--r--chrome/common/extensions/extension_file_util.cc2
-rw-r--r--chrome/common/extensions/extension_file_util_unittest.cc2
-rw-r--r--chrome/common/extensions/extension_l10n_util.cc30
-rw-r--r--chrome/common/extensions/extension_l10n_util.h9
-rw-r--r--chrome/common/extensions/extension_l10n_util_unittest.cc11
-rw-r--r--chrome/common/extensions/extension_manifests_unittest.cc43
-rw-r--r--chrome/common/extensions/extension_message_bundle.cc20
-rw-r--r--chrome/common/extensions/extension_message_bundle.h9
-rw-r--r--chrome/common/extensions/extension_resource_unittest.cc3
-rw-r--r--chrome/common/extensions/extension_unpacker.cc4
-rw-r--r--chrome/common/extensions/update_manifest.cc5
-rw-r--r--chrome/common/extensions/url_pattern.h9
111 files changed, 937 insertions, 345 deletions
diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json
index 1cb4a0e..8dac7c4 100644
--- a/chrome/common/extensions/api/extension_api.json
+++ b/chrome/common/extensions/api/extension_api.json
@@ -517,10 +517,15 @@
"optional": true,
"description": "If true, enqueues this utterance if TTS is already in progress. If false (the default), interrupts any current speech and flushes the speech queue before speaking this new utterance."
},
- "languageName": {
+ "voiceName": {
"type": "string",
"optional": true,
- "description": "The language name for synthesis specified in the form <language>-<locale>, e.g. en-US, en-GB, fr-CA, zh-CN, etc."
+ "description": "The name of the voice to use for synthesis."
+ },
+ "locale": {
+ "type": "string",
+ "optional": true,
+ "description": "The language and region code that specify the language and dialect to be used for synthesis, in the form <language>-<region>, e.g. en-US, en-GB, fr-CA, zh-CN, etc."
},
"gender": {
"type": "string",
@@ -584,6 +589,99 @@
]
}
]
+ },
+ {
+ "name": "speakCompleted",
+ "nodoc": true,
+ "type": "function",
+ "description": "A callback passed to the onSpeak event.",
+ "parameters": [
+ {
+ "type": "integer",
+ "name": "requestId"
+ },
+ {
+ "type": "string",
+ "optional": "true",
+ "name": "errorMessage"
+ }
+ ]
+ }
+ ],
+ "events": [
+ {
+ "name": "onSpeak",
+ "type": "function",
+ "description": "Called when the user makes a call to tts.speak and the options matches one of the tts_voices from this extension's manifest.",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "utterance",
+ "description": "The text to speak."
+ },
+ {
+ "type": "object",
+ "name": "options",
+ "description": "The speak options.",
+ "properties": {
+ "voiceName": {
+ "type": "string",
+ "optional": true,
+ "description": "The name of the voice to use for synthesis."
+ },
+ "locale": {
+ "type": "string",
+ "optional": true,
+ "description": "The language and region code that specify the language and dialect to be used for synthesis, in the form <language>-<region>, e.g. en-US, en-GB, fr-CA, zh-CN, etc."
+ },
+ "gender": {
+ "type": "string",
+ "optional": true,
+ "description": "Gender of voice for synthesized speech.",
+ "enum": ["male", "female"]
+ },
+ "rate": {
+ "type": "number",
+ "optional": true,
+ "minimum": 0,
+ "maximum": 1,
+ "description": "Speaking speed between 0 and 1 inclusive, with 0 being slowest and 1 being fastest."
+ },
+ "pitch": {
+ "type": "number",
+ "optional": true,
+ "minimum": 0,
+ "maximum": 1,
+ "description": "Speaking pitch between 0 and 1 inclusive, with 0 being lowest and 1 being highest."
+ },
+ "volume": {
+ "type": "number",
+ "optional": true,
+ "minimum": 0,
+ "maximum": 1,
+ "description": "Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest."
+ }
+ }
+ },
+ {
+ "type": "function",
+ "name": "callback",
+ "description": "You must call this function when speaking is finished.",
+ "parameters": [
+ {
+ "type": "string",
+ "name": "error",
+ "optional": true,
+ "description": "Error message, which will be returned to the caller in chrome.extension.lastError."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "onStop",
+ "type": "function",
+ "description": "Fired when a call is made to tts.stop and this extension may be in the middle of speaking."
}
]
},
@@ -710,6 +808,7 @@
{"type": "array", "items": {"type": "string"}}
]
},
+ "tabId": {"type": "integer", "minimum": 0, "optional": true, "description": "The id of the tab for which you want to adopt to the new window."},
"left": {"type": "integer", "optional": true, "description": "The number of pixels to position the new window from the left edge of the screen. If not specified, the new window is offset naturally from the last focusd window."},
"top": {"type": "integer", "optional": true, "description": "The number of pixels to position the new window from the top edge of the screen. If not specified, the new window is offset naturally from the last focusd window."},
"width": {"type": "integer", "minimum": 0, "optional": true, "description": "The width in pixels of the new window. If not specified defaults to a natural width."},
@@ -3635,8 +3734,12 @@
"description": "An object encapsulating a complete proxy configuration.",
"properties": {
"rules": {"$ref": "ProxyRules", "optional": true, "description": "The proxy rules describing this configuration."},
- "autoDetect": {"type": "boolean", "optional": true, "description": "True if the proxy settings sbould be detected automatically."},
- "pacScript": {"$ref": "PacScript", "optional": true, "description": "The proxy auto-config (PAC) script for this configuration."}
+ "pacScript": {"$ref": "PacScript", "optional": true, "description": "The proxy auto-config (PAC) script for this configuration."},
+ "mode": {
+ "type": "string",
+ "enum": ["direct", "auto_detect", "pac_script", "fixed_servers", "system"],
+ "description": "'direct' = Never use a proxy<br>'auto_detect' = Auto detect proxy settings<br>'pac_script' = Use specified PAC script<br>'fixed_servers' = Manually specify proxy servers<br>'system' = Use system proxy settings"
+ }
}
}
],
@@ -3815,7 +3918,7 @@
"name": "state",
"type": "string",
"enum": ["hidden", "shown", "active"],
- "description": "'hidden' indicates sidebar is not defined for the specified tab (show was never called or hide() was called). Nothing is displayed for this sidebar.</br>'shown' means sidebar is defined for the specified tab; mini tab is displayed for this sidebar. Sidebar UI is either collapsed or displaying a content of some other extension's sidebar.</br>'active' indicates that sidebar is defined for the specified tab; sidebar UI is expanded and displaying this sidebar's content."
+ "description": "'hidden' indicates sidebar is not defined for the specified tab (show was never called or hide() was called). Nothing is displayed for this sidebar.<br>'shown' means sidebar is defined for the specified tab; mini tab is displayed for this sidebar. Sidebar UI is either collapsed or displaying a content of some other extension's sidebar.<br>'active' indicates that sidebar is defined for the specified tab; sidebar UI is expanded and displaying this sidebar's content."
}
]
}
@@ -4133,7 +4236,7 @@
},
{
"name": "get",
- "description": "Return information about the installed extension with the given ID.",
+ "description": "Return information about the installed extension or app that has the given ID.",
"parameters": [
{
"name": "id",
diff --git a/chrome/common/extensions/docs/a11y.html b/chrome/common/extensions/docs/a11y.html
index d18f6f7..721b93a 100644
--- a/chrome/common/extensions/docs/a11y.html
+++ b/chrome/common/extensions/docs/a11y.html
@@ -956,7 +956,7 @@ see <a href="samples.html">Samples</a>.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/api_index.html b/chrome/common/extensions/docs/api_index.html
index af8e72b..5480998 100644
--- a/chrome/common/extensions/docs/api_index.html
+++ b/chrome/common/extensions/docs/api_index.html
@@ -523,7 +523,7 @@ For more information, see the video
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/api_other.html b/chrome/common/extensions/docs/api_other.html
index 7a0077e..baa17f2 100644
--- a/chrome/common/extensions/docs/api_other.html
+++ b/chrome/common/extensions/docs/api_other.html
@@ -555,7 +555,7 @@ just as they do in other web pages.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/apps.html b/chrome/common/extensions/docs/apps.html
index 0b50ed7..53634d6 100644
--- a/chrome/common/extensions/docs/apps.html
+++ b/chrome/common/extensions/docs/apps.html
@@ -378,7 +378,7 @@ extensions and packaged apps, and packaged apps and hosted apps:
<ul>
<li> <a href="http://code.google.com/chrome/apps/articles/thinking_in_web_apps.html">Thinking in Web Apps</a> </li>
- <li> <a href="http://codesite-staging:29006/chrome/webstore/articles/apps_vs_extensions.html">Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store</a> </li>
+ <li> <a href="http://code.google.com/chrome/webstore/articles/apps_vs_extensions.html">Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store</a> </li>
</ul>
@@ -653,7 +653,7 @@ basic concepts about extensions.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/autoupdate.html b/chrome/common/extensions/docs/autoupdate.html
index d3aaf51..b65e2a8 100644
--- a/chrome/common/extensions/docs/autoupdate.html
+++ b/chrome/common/extensions/docs/autoupdate.html
@@ -612,7 +612,7 @@ Another option is to use the --extensions-update-frequency command-line flag to
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/background_pages.html b/chrome/common/extensions/docs/background_pages.html
index 85d9b99..68dfa2d 100644
--- a/chrome/common/extensions/docs/background_pages.html
+++ b/chrome/common/extensions/docs/background_pages.html
@@ -605,7 +605,7 @@ from a file named <code>image.html</code>.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/bookmarks.html b/chrome/common/extensions/docs/bookmarks.html
index 33dd392..1f31c7b 100644
--- a/chrome/common/extensions/docs/bookmarks.html
+++ b/chrome/common/extensions/docs/bookmarks.html
@@ -5323,7 +5323,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/browserAction.html b/chrome/common/extensions/docs/browserAction.html
index f8b505f..639fd88 100644
--- a/chrome/common/extensions/docs/browserAction.html
+++ b/chrome/common/extensions/docs/browserAction.html
@@ -1909,7 +1909,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/content_scripts.html b/chrome/common/extensions/docs/content_scripts.html
index e64f704..3e529d2 100644
--- a/chrome/common/extensions/docs/content_scripts.html
+++ b/chrome/common/extensions/docs/content_scripts.html
@@ -961,7 +961,7 @@ sending a request to its parent extension.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/contextMenus.html b/chrome/common/extensions/docs/contextMenus.html
index 981c17d..1265b34 100644
--- a/chrome/common/extensions/docs/contextMenus.html
+++ b/chrome/common/extensions/docs/contextMenus.html
@@ -2933,7 +2933,7 @@ You can find samples of this API on the
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/cookies.html b/chrome/common/extensions/docs/cookies.html
index f45e8ef..582afa1 100644
--- a/chrome/common/extensions/docs/cookies.html
+++ b/chrome/common/extensions/docs/cookies.html
@@ -3611,7 +3611,7 @@ see <a href="samples.html">Samples</a>.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/crx.html b/chrome/common/extensions/docs/crx.html
index 9a72d60..b1b2df7 100644
--- a/chrome/common/extensions/docs/crx.html
+++ b/chrome/common/extensions/docs/crx.html
@@ -638,7 +638,7 @@ echo "Wrote $crx"
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/css/samples.css b/chrome/common/extensions/docs/css/samples.css
index de3bdb5..05701ea 100644
--- a/chrome/common/extensions/docs/css/samples.css
+++ b/chrome/common/extensions/docs/css/samples.css
@@ -75,7 +75,6 @@ img.icon {
margin: 10px 0;
background: #eee;
padding: 10px;
- -webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
}
@@ -99,4 +98,4 @@ img.icon {
padding: 50px 0;
font-size: 17px;
font-weight: bold;
-} \ No newline at end of file
+}
diff --git a/chrome/common/extensions/docs/devguide.html b/chrome/common/extensions/docs/devguide.html
index 8e489a6..a806b4b 100644
--- a/chrome/common/extensions/docs/devguide.html
+++ b/chrome/common/extensions/docs/devguide.html
@@ -607,7 +607,7 @@ applies to packaged apps, as well as extensions.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/docs.html b/chrome/common/extensions/docs/docs.html
index baab851..aa629a7 100644
--- a/chrome/common/extensions/docs/docs.html
+++ b/chrome/common/extensions/docs/docs.html
@@ -610,7 +610,7 @@ The following table lists the doc locations and explains how they differ.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/events.html b/chrome/common/extensions/docs/events.html
index 3136703..e6a3bb2 100644
--- a/chrome/common/extensions/docs/events.html
+++ b/chrome/common/extensions/docs/events.html
@@ -515,7 +515,7 @@ bool hasListener(function callback(...))
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip b/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip
index 73a1258..02d772f 100644
--- a/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip
+++ b/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/api/bookmarks/basic/icon.png b/chrome/common/extensions/docs/examples/api/bookmarks/basic/icon.png
new file mode 100644
index 0000000..9a79a46
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/api/bookmarks/basic/icon.png
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/api/omnibox/simple-example.zip b/chrome/common/extensions/docs/examples/api/omnibox/simple-example.zip
index 17d22b2..2a5116d 100644
--- a/chrome/common/extensions/docs/examples/api/omnibox/simple-example.zip
+++ b/chrome/common/extensions/docs/examples/api/omnibox/simple-example.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher.zip b/chrome/common/extensions/docs/examples/extensions/app_launcher.zip
new file mode 100644
index 0000000..6f71c38
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher/browser_action_icon.png b/chrome/common/extensions/docs/examples/extensions/app_launcher/browser_action_icon.png
new file mode 100644
index 0000000..046ee42
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher/browser_action_icon.png
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher/icon.png b/chrome/common/extensions/docs/examples/extensions/app_launcher/icon.png
new file mode 100644
index 0000000..4aa2994
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher/icon.png
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json b/chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json
new file mode 100644
index 0000000..86b0286
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json
@@ -0,0 +1,13 @@
+{
+ "name": "App Launcher",
+ "version": "0.7.3",
+ "permissions": ["management"],
+ "browser_action": {
+ "default_icon": "browser_action_icon.png",
+ "default_title": "App Launcher",
+ "default_popup": "popup.html"
+ },
+ "icons": {
+ "48": "icon.png"
+ }
+}
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css b/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css
new file mode 100644
index 0000000..aa6ce07
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css
@@ -0,0 +1,49 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+html {
+ overflow-x: hidden;
+}
+
+body {
+ font-family: Helvetica, Arial, sans-serif;
+}
+
+#search_container {
+ text-align: center;
+}
+
+#search {
+ width: 85%;
+}
+
+.app {
+ width: 100%;
+ margin-top: 7px;
+ margin-bottom: 7px;
+ margin-left: 2px;
+ margin-right: 20px;
+ white-space: nowrap;
+}
+
+.app img {
+ vertical-align: middle;
+ height: 38px;
+ width: 38px;
+}
+
+.app_title {
+ vertical-align: middle;
+ margin-left: 5px;
+}
+
+.app:hover {
+ background-color: rgb(250,250,250);
+ cursor:pointer;
+ outline: 1px dotted rgb(100,100,200);
+}
+
+.app_selected,.app_selected:hover {
+ background-color: rgb(230,230,230);
+}
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html b/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html
new file mode 100644
index 0000000..ca14080
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<!--
+ * Copyright (c) 2010 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+-->
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="popup.css">
+<script src="popup.js"></script>
+</head>
+<body onload="onLoad()">
+
+<div id="spacer_dummy"></div>
+<div id="outer">
+
+<div id="appstore_link" style="display:none">
+<p>No apps installed.</p><p>
+<a href='javascript:chrome.tabs.create({"url":"https://chrome.google.com/webstore", "selected":true});window.close();'>Go get some</a></p>
+</div>
+
+<div id="search_container">
+<input id="search" type="text" placeholder="type to search"
+ oninput="onSearchInput()" spellcheck="false">
+</div>
+
+<div id="apps"></div>
+
+</div>
+
+</body>
+</html>
diff --git a/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js b/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js
new file mode 100644
index 0000000..8918c62
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js
@@ -0,0 +1,198 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+function $(id) {
+ return document.getElementById(id);
+}
+
+// Returns the largest size icon, or a default icon, for the given |app|.
+function getIconURL(app) {
+ if (!app.icons || app.icons.length == 0) {
+ return chrome.extension.getURL("icon.png");
+ }
+ var largest = {size:0};
+ for (var i = 0; i < app.icons.length; i++) {
+ var icon = app.icons[i];
+ if (icon.size > largest.size) {
+ largest = icon;
+ }
+ }
+ return largest.url;
+}
+
+function launchApp(id) {
+ chrome.management.launchApp(id);
+ window.close(); // Only needed on OSX because of crbug.com/63594
+}
+
+// Adds DOM nodes for |app| into |appsDiv|.
+function addApp(appsDiv, app, selected) {
+ var div = document.createElement("div");
+ div.className = "app" + (selected ? " app_selected" : "");
+
+ div.onclick = function() {
+ launchApp(app.id);
+ };
+
+ var img = document.createElement("img");
+ img.src = getIconURL(app);
+ div.appendChild(img);
+
+ var title = document.createElement("span");
+ title.className = "app_title";
+ title.innerText = app.name;
+ div.appendChild(title);
+
+ appsDiv.appendChild(div);
+}
+
+// The list of all apps & extensions.
+var completeList = [];
+
+// A filtered list of apps we actually want to show.
+var appList = [];
+
+// The index of an app in |appList| that should be highlighted.
+var selectedIndex = 0;
+
+function reloadAppDisplay() {
+ var appsDiv = $("apps");
+
+ // Empty the current content.
+ appsDiv.innerHTML = "";
+
+ for (var i = 0; i < appList.length; i++) {
+ var item = appList[i];
+ addApp(appsDiv, item, i == selectedIndex);
+ }
+}
+
+// Puts only enabled apps from completeList into appList.
+function rebuildAppList(filter) {
+ selectedIndex = 0;
+ appList = [];
+ for (var i = 0; i < completeList.length; i++){
+ var item = completeList[i];
+ // Skip extensions and disabled apps.
+ if (!item.isApp || !item.enabled) {
+ continue;
+ }
+ if (filter && item.name.toLowerCase().search(filter) < 0) {
+ continue;
+ }
+ appList.push(item);
+ }
+}
+
+// In order to keep the popup bubble from shrinking as your search narrows the
+// list of apps shown, we set an explicit width on the outermost div.
+var didSetExplicitWidth = false;
+
+function adjustWidthIfNeeded(filter) {
+ if (filter.length > 0 && !didSetExplicitWidth) {
+ // Set an explicit width, correcting for any scroll bar present.
+ var outer = $("outer");
+ var correction = window.innerWidth - document.documentElement.clientWidth;
+ var width = outer.offsetWidth;
+ $("spacer_dummy").style.width = width + correction + "px";
+ didSetExplicitWidth = true;
+ }
+}
+
+// Shows the list of apps based on the search box contents.
+function onSearchInput() {
+ var filter = $("search").value;
+ adjustWidthIfNeeded(filter);
+ rebuildAppList(filter);
+ reloadAppDisplay();
+}
+
+function compare(a, b) {
+ return (a > b) ? 1 : (a == b ? 0 : -1);
+}
+
+function compareByName(app1, app2) {
+ return compare(app1.name.toLowerCase(), app2.name.toLowerCase());
+}
+
+function onLoad() {
+ chrome.management.getAll(function(info) {
+ var appCount = 0;
+ for (var i = 0; i < info.length; i++) {
+ if (info[i].isApp) {
+ appCount++;
+ }
+ }
+ if (appCount == 0) {
+ $("search").style.display = "none";
+ $("appstore_link").style.display = "";
+ return;
+ }
+ completeList = info.sort(compareByName);
+ onSearchInput();
+ });
+}
+
+// Changes the selected app in the list.
+function changeSelection(newIndex) {
+ if (newIndex >= 0 && newIndex <= appList.length - 1) {
+ selectedIndex = newIndex;
+ reloadAppDisplay();
+
+ var selected = document.getElementsByClassName("app_selected")[0];
+ var rect = selected.getBoundingClientRect();
+ if (newIndex == 0) {
+ window.scrollTo(0, 0);
+ } else if (newIndex == appList.length - 1) {
+ window.scrollTo(0, document.height);
+ } else if (rect.top < 0) {
+ window.scrollBy(0, rect.top);
+ } else if (rect.bottom > innerHeight) {
+ window.scrollBy(0, rect.bottom - innerHeight);
+ }
+ }
+}
+
+var keys = {
+ ENTER : 13,
+ ESCAPE : 27,
+ END : 35,
+ HOME : 36,
+ LEFT : 37,
+ UP : 38,
+ RIGHT : 39,
+ DOWN : 40
+};
+
+// Set up a key event handler that handles moving the selected app up/down,
+// hitting enter to launch the selected app, as well as auto-focusing the
+// search box as soon as you start typing.
+window.onkeydown = function(event) {
+ switch (event.keyCode) {
+ case keys.DOWN:
+ changeSelection(selectedIndex + 1);
+ break;
+ case keys.UP:
+ changeSelection(selectedIndex - 1);
+ break;
+ case keys.HOME:
+ changeSelection(0);
+ break;
+ case keys.END:
+ changeSelection(appList.length - 1);
+ break;
+ case keys.ENTER:
+ var app = appList[selectedIndex];
+ if (app) {
+ launchApp(app.id);
+ }
+ break;
+ default:
+ // Focus the search box and return true so you can just start typing even
+ // when the search box isn't focused.
+ $("search").focus();
+ return true;
+ }
+ return false;
+};
diff --git a/chrome/common/extensions/docs/examples/extensions/benchmark.zip b/chrome/common/extensions/docs/examples/extensions/benchmark.zip
index a322ab3..3d799d2 100644
--- a/chrome/common/extensions/docs/examples/extensions/benchmark.zip
+++ b/chrome/common/extensions/docs/examples/extensions/benchmark.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/benchmark/options.html b/chrome/common/extensions/docs/examples/extensions/benchmark/options.html
index 24adc77..6db31d2 100644
--- a/chrome/common/extensions/docs/examples/extensions/benchmark/options.html
+++ b/chrome/common/extensions/docs/examples/extensions/benchmark/options.html
@@ -36,9 +36,9 @@ div#header {
position: relative;
overflow: hidden;
background: #5296de;
- -webkit-background-size: 100%;
+ background-size: 100%;
border: 1px solid #3a75bd;
- -webkit-border-radius: 6px;
+ border-radius: 6px;
color: white;
text-shadow: 0 0 2px black;
}
diff --git a/chrome/common/extensions/docs/examples/extensions/buildbot.zip b/chrome/common/extensions/docs/examples/extensions/buildbot.zip
index d7eb8c4..9e7ad86 100644
--- a/chrome/common/extensions/docs/examples/extensions/buildbot.zip
+++ b/chrome/common/extensions/docs/examples/extensions/buildbot.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/buildbot/bg.html b/chrome/common/extensions/docs/examples/extensions/buildbot/bg.html
index 39dd344..dda276e 100644
--- a/chrome/common/extensions/docs/examples/extensions/buildbot/bg.html
+++ b/chrome/common/extensions/docs/examples/extensions/buildbot/bg.html
@@ -49,9 +49,14 @@ function requestURL(url, callback) {
try {
xhr.onreadystatechange = function(state) {
if (xhr.readyState == 4) {
- var text = xhr.responseText;
- //console.log(text);
- callback(text);
+ if (xhr.status == 200) {
+ var text = xhr.responseText;
+ //console.log(text);
+ callback(text);
+ } else {
+ chrome.browserAction.setBadgeText({text:"?"});
+ chrome.browserAction.setBadgeBackgroundColor({color:[0,0,255,255]});
+ }
}
}
diff --git a/chrome/common/extensions/docs/examples/extensions/buildbot/manifest.json b/chrome/common/extensions/docs/examples/extensions/buildbot/manifest.json
index 1acb250..baeca6d 100644
--- a/chrome/common/extensions/docs/examples/extensions/buildbot/manifest.json
+++ b/chrome/common/extensions/docs/examples/extensions/buildbot/manifest.json
@@ -1,6 +1,6 @@
{
"name": "Chromium Buildbot Monitor",
- "version": "0.7.5",
+ "version": "0.7.6",
"description": "Displays the status of the Chromium buildbot in the toolbar. Click to see more detailed status in a popup.",
"icons": { "128": "icon.png" },
"background_page": "bg.html",
diff --git a/chrome/common/extensions/docs/examples/extensions/buildbot/popup.html b/chrome/common/extensions/docs/examples/extensions/buildbot/popup.html
index 3a66636..f89511a 100644
--- a/chrome/common/extensions/docs/examples/extensions/buildbot/popup.html
+++ b/chrome/common/extensions/docs/examples/extensions/buildbot/popup.html
@@ -17,7 +17,11 @@ function updateBotList(text) {
}
var data;
try {
- data = JSON.parse(results[1]);
+ // The build bot returns invalid JSON. Namely it uses single
+ // quotes and includes commas in some invalid locations. We have to
+ // run some regexps across the text to fix it up.
+ var jsonString = results[1].replace(/'/g, '"').replace(/},]/g,'}]');
+ data = JSON.parse(jsonString);
} catch (e) {
console.dir(e);
console.log(text);
@@ -104,9 +108,13 @@ function requestURL(url, callback) {
try {
xhr.onreadystatechange = function(state) {
if (xhr.readyState == 4) {
- var text = xhr.responseText;
- //console.log(text);
- callback(text);
+ if (xhr.status == 200) {
+ var text = xhr.responseText;
+ //console.log(text);
+ callback(text);
+ } else {
+ bots.innerText = "Error.";
+ }
}
}
@@ -147,7 +155,7 @@ body {
#links {
background-color: #efefef;
border: 1px solid #cccccc;
- -webkit-border-radius: 5px;
+ border-radius: 5px;
margin-top: 1px;
padding: 3px;
white-space: nowrap;
@@ -175,7 +183,7 @@ body.small .bot {
.bot {
cursor: pointer;
- -webkit-border-radius: 5px;
+ border-radius: 5px;
margin-top: 1px;
padding: 3px;
white-space: nowrap;
diff --git a/chrome/common/extensions/docs/examples/extensions/chrome_search.zip b/chrome/common/extensions/docs/examples/extensions/chrome_search.zip
index d0ad166..a38e561 100644
--- a/chrome/common/extensions/docs/examples/extensions/chrome_search.zip
+++ b/chrome/common/extensions/docs/examples/extensions/chrome_search.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json b/chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json
index 54de17c..3254391 100644
--- a/chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json
+++ b/chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json
@@ -1,9 +1,9 @@
{
"background_page": "background.html",
"description": "Add support to the omnibox to search the Chromium source code.",
+ "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRx0y4f/CuomPPeGxcVMo7yfYZ1apxD+9e3ItNtPRBi8WMmzG0xhjnqvm03LTfTljbzA1L93s31HkjS5Bd12qM8SSZxOOizsZveK1tdpX0QelikSUaz1wwIyjatoC/jJy7vuuk0j5kPeLkNAhYGJTqN3H/Pqt0lFF1VFX4+fCEvQIDAQAB",
"name": "Chromium Search",
"omnibox": { "keyword" : "src" },
"permissions": [ "tabs", "http://www.google.com/" ],
- "version": "5",
- "minimum_chrome_version": "9"
+ "version": "4"
}
diff --git a/chrome/common/extensions/docs/examples/extensions/imageinfo.zip b/chrome/common/extensions/docs/examples/extensions/imageinfo.zip
index 9ab6603..dbce95b 100644
--- a/chrome/common/extensions/docs/examples/extensions/imageinfo.zip
+++ b/chrome/common/extensions/docs/examples/extensions/imageinfo.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/tutorials/getstarted.zip b/chrome/common/extensions/docs/examples/tutorials/getstarted.zip
index 54083ae..268cc5d 100644
--- a/chrome/common/extensions/docs/examples/tutorials/getstarted.zip
+++ b/chrome/common/extensions/docs/examples/tutorials/getstarted.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zip b/chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zip
new file mode 100644
index 0000000..37deb7f
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zip
Binary files differ
diff --git a/chrome/common/extensions/docs/experimental.clipboard.html b/chrome/common/extensions/docs/experimental.clipboard.html
index 24287e0..4852c75 100644
--- a/chrome/common/extensions/docs/experimental.clipboard.html
+++ b/chrome/common/extensions/docs/experimental.clipboard.html
@@ -966,7 +966,7 @@ generally indicates the tab is going away.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.contextMenus.html b/chrome/common/extensions/docs/experimental.contextMenus.html
index aa7a362..5f246fd 100644
--- a/chrome/common/extensions/docs/experimental.contextMenus.html
+++ b/chrome/common/extensions/docs/experimental.contextMenus.html
@@ -480,7 +480,7 @@ You can read all about it at its new home:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.cookies.html b/chrome/common/extensions/docs/experimental.cookies.html
index 5fdcdcc..b179e08 100644
--- a/chrome/common/extensions/docs/experimental.cookies.html
+++ b/chrome/common/extensions/docs/experimental.cookies.html
@@ -480,7 +480,7 @@ You can read all about it at its new home:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.history.html b/chrome/common/extensions/docs/experimental.history.html
index 0e45ec7..b839162 100644
--- a/chrome/common/extensions/docs/experimental.history.html
+++ b/chrome/common/extensions/docs/experimental.history.html
@@ -480,7 +480,7 @@ You can read all about it at its new home:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.html b/chrome/common/extensions/docs/experimental.html
index 1c9ebe1..fd600a2 100644
--- a/chrome/common/extensions/docs/experimental.html
+++ b/chrome/common/extensions/docs/experimental.html
@@ -547,7 +547,7 @@ For information on the standard APIs that extensions can use, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.idle.html b/chrome/common/extensions/docs/experimental.idle.html
index 6d1ae19..6f709ae 100644
--- a/chrome/common/extensions/docs/experimental.idle.html
+++ b/chrome/common/extensions/docs/experimental.idle.html
@@ -480,7 +480,7 @@ You can read all about it at its new home:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.infobars.html b/chrome/common/extensions/docs/experimental.infobars.html
index f542b7a..59e642d 100644
--- a/chrome/common/extensions/docs/experimental.infobars.html
+++ b/chrome/common/extensions/docs/experimental.infobars.html
@@ -800,7 +800,7 @@ For example:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.processes.html b/chrome/common/extensions/docs/experimental.processes.html
index f2a289e..a41a1c6 100644
--- a/chrome/common/extensions/docs/experimental.processes.html
+++ b/chrome/common/extensions/docs/experimental.processes.html
@@ -1107,7 +1107,7 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.proxy.html b/chrome/common/extensions/docs/experimental.proxy.html
index 07c2ed9..a13ce9e 100644
--- a/chrome/common/extensions/docs/experimental.proxy.html
+++ b/chrome/common/extensions/docs/experimental.proxy.html
@@ -1314,7 +1314,7 @@
</div><div>
<div>
<dt>
- <var>autoDetect</var>
+ <var>pacScript</var>
<em>
<!-- TYPE -->
@@ -1323,15 +1323,15 @@
<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; ">
+ <a href="experimental.proxy.html#type-PacScript">PacScript</a>
+ </span>
+ <span style="display: none; ">
+ <span>
array of <span><span></span></span>
</span>
- <span>boolean</span>
- <span style="display: none; "></span>
+ <span>paramType</span>
+ <span></span>
</span>
</span>
)
@@ -1342,7 +1342,7 @@
<dd class="todo" style="display: none; ">
Undocumented.
</dd>
- <dd>True if the proxy settings sbould be detected automatically.</dd>
+ <dd>The proxy auto-config (PAC) script for this configuration.</dd>
<dd style="display: none; ">
This parameter was added in version
<b><span></span></b>.
@@ -1372,24 +1372,24 @@
</div><div>
<div>
<dt>
- <var>pacScript</var>
+ <var>mode</var>
<em>
<!-- TYPE -->
<div style="display:inline">
(
- <span class="optional">optional</span>
- <span class="enum" style="display: none; ">enumerated</span>
+ <span class="optional" style="display: none; ">optional</span>
+ <span class="enum">enumerated</span>
<span id="typeTemplate">
- <span>
- <a href="experimental.proxy.html#type-PacScript">PacScript</a>
- </span>
<span style="display: none; ">
- <span>
+ <a> Type</a>
+ </span>
+ <span>
+ <span style="display: none; ">
array of <span><span></span></span>
</span>
- <span>paramType</span>
- <span></span>
+ <span>string</span>
+ <span>["direct", "auto_detect", "pac_script", "fixed_servers", "system"]</span>
</span>
</span>
)
@@ -1400,7 +1400,7 @@
<dd class="todo" style="display: none; ">
Undocumented.
</dd>
- <dd>The proxy auto-config (PAC) script for this configuration.</dd>
+ <dd>'direct' = Never use a proxy<br>'auto_detect' = Auto detect proxy settings<br>'pac_script' = Use specified PAC script<br>'fixed_servers' = Manually specify proxy servers<br>'system' = Use system proxy settings</dd>
<dd style="display: none; ">
This parameter was added in version
<b><span></span></b>.
@@ -1455,7 +1455,7 @@
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.sidebar.html b/chrome/common/extensions/docs/experimental.sidebar.html
index 148de03..727bf89 100644
--- a/chrome/common/extensions/docs/experimental.sidebar.html
+++ b/chrome/common/extensions/docs/experimental.sidebar.html
@@ -2583,7 +2583,7 @@
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.webNavigation.html b/chrome/common/extensions/docs/experimental.webNavigation.html
index 52a04af..237ee23 100644
--- a/chrome/common/extensions/docs/experimental.webNavigation.html
+++ b/chrome/common/extensions/docs/experimental.webNavigation.html
@@ -2555,7 +2555,7 @@
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/experimental.webRequest.html b/chrome/common/extensions/docs/experimental.webRequest.html
index 71769af..14346ff 100644
--- a/chrome/common/extensions/docs/experimental.webRequest.html
+++ b/chrome/common/extensions/docs/experimental.webRequest.html
@@ -2493,7 +2493,7 @@
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/extension.html b/chrome/common/extensions/docs/extension.html
index a0e11fd..e7bb9e7 100644
--- a/chrome/common/extensions/docs/extension.html
+++ b/chrome/common/extensions/docs/extension.html
@@ -3556,7 +3556,7 @@ For details, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/external_extensions.html b/chrome/common/extensions/docs/external_extensions.html
index 0ee2ed5..39c1540 100644
--- a/chrome/common/extensions/docs/external_extensions.html
+++ b/chrome/common/extensions/docs/external_extensions.html
@@ -768,7 +768,7 @@ through the UI, and then uninstalling it. </p>
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/faq.html b/chrome/common/extensions/docs/faq.html
index 0e17982..66cc1b4 100644
--- a/chrome/common/extensions/docs/faq.html
+++ b/chrome/common/extensions/docs/faq.html
@@ -872,7 +872,7 @@ win,stable,#.#.###.#,#.#.###.#</pre>
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/getstarted.html b/chrome/common/extensions/docs/getstarted.html
index 3dafe3c..d7e94c8 100644
--- a/chrome/common/extensions/docs/getstarted.html
+++ b/chrome/common/extensions/docs/getstarted.html
@@ -376,6 +376,7 @@ to the toolbar of Google Chrome.
by clicking the wrench icon
<img src="images/toolsmenu.gif" width="29" height="29" alt="" style="margin-top:0">
and choosing <b>Tools &gt; Extensions</b>.
+ (On Mac, use <b>Window &gt; Extensions</b>.)
</li>
<li>
@@ -655,7 +656,7 @@ If you don't feel like reading, try these:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/history.html b/chrome/common/extensions/docs/history.html
index e6be466..ce1c49e 100644
--- a/chrome/common/extensions/docs/history.html
+++ b/chrome/common/extensions/docs/history.html
@@ -3150,7 +3150,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/hosting.html b/chrome/common/extensions/docs/hosting.html
index 0a688fb..e852619 100644
--- a/chrome/common/extensions/docs/hosting.html
+++ b/chrome/common/extensions/docs/hosting.html
@@ -560,7 +560,7 @@ or try hosting the <code>.crx</code> file at another server.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/i18n-messages.html b/chrome/common/extensions/docs/i18n-messages.html
index 3c85b6b..cf07efd 100644
--- a/chrome/common/extensions/docs/i18n-messages.html
+++ b/chrome/common/extensions/docs/i18n-messages.html
@@ -814,7 +814,7 @@ because its value is obvious from the "content" field.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/i18n.html b/chrome/common/extensions/docs/i18n.html
index d5e3bb9..39d0f83 100644
--- a/chrome/common/extensions/docs/i18n.html
+++ b/chrome/common/extensions/docs/i18n.html
@@ -1421,7 +1421,7 @@ For details on calling <code>getAcceptLanguages()</code>, see the
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/idle.html b/chrome/common/extensions/docs/idle.html
index 1ab1b64..6b3aa54 100644
--- a/chrome/common/extensions/docs/idle.html
+++ b/chrome/common/extensions/docs/idle.html
@@ -713,7 +713,7 @@ For example:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/images/perms-hw1.png b/chrome/common/extensions/docs/images/perms-hw1.png
index 224bd2d..eb6a79e 100644
--- a/chrome/common/extensions/docs/images/perms-hw1.png
+++ b/chrome/common/extensions/docs/images/perms-hw1.png
Binary files differ
diff --git a/chrome/common/extensions/docs/images/perms-hw2.png b/chrome/common/extensions/docs/images/perms-hw2.png
index 644a276..8fd5c47 100644
--- a/chrome/common/extensions/docs/images/perms-hw2.png
+++ b/chrome/common/extensions/docs/images/perms-hw2.png
Binary files differ
diff --git a/chrome/common/extensions/docs/index.html b/chrome/common/extensions/docs/index.html
index 54cd32f..7e89cfc 100644
--- a/chrome/common/extensions/docs/index.html
+++ b/chrome/common/extensions/docs/index.html
@@ -582,7 +582,7 @@ For more information, see the
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/management.html b/chrome/common/extensions/docs/management.html
index 3bb1d52..7efee0e 100644
--- a/chrome/common/extensions/docs/management.html
+++ b/chrome/common/extensions/docs/management.html
@@ -384,7 +384,7 @@ For example:</p>
<div class="description">
<p class="todo" style="display: none; ">Undocumented.</p>
- <p>Return information about the installed extension with the given ID.</p>
+ <p>Return information about the installed extension or app that has the given ID.</p>
<!-- PARAMETERS -->
<h4>Parameters</h4>
@@ -2661,7 +2661,7 @@ For example:</p>
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/manifest.html b/chrome/common/extensions/docs/manifest.html
index 658290f..c043355 100644
--- a/chrome/common/extensions/docs/manifest.html
+++ b/chrome/common/extensions/docs/manifest.html
@@ -441,9 +441,8 @@ see <a href="i18n.html">Internationalization</a> for details.
The URL of the homepage for this extension. The extensions management page (chrome://extensions)
will contain a link to this URL. This field is particularly useful if you
<a href="hosting.html">host the extension on your own site</a>. If you distribute your
-extension using the <a href="https://chrome.google.com/extensions">Extensions Gallery</a>,
-the homepage URL defaults to the extension's own gallery page.
-<!-- PENDING: check whether the same is true of the store -->
+extension using the <a href="https://chrome.google.com/extensions">Extensions Gallery</a> or <a href="https://chrome.google.com/webstore">Chrome Web Store</a>,
+the homepage URL defaults to the extension's own page.
</p>
<h3 id="icons">icons</h3>
@@ -950,7 +949,7 @@ For more information, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/match_patterns.html b/chrome/common/extensions/docs/match_patterns.html
index ddbc56b..c9aa23c 100644
--- a/chrome/common/extensions/docs/match_patterns.html
+++ b/chrome/common/extensions/docs/match_patterns.html
@@ -702,7 +702,7 @@ Here are some examples of <em>invalid</em> pattern matches:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/messaging.html b/chrome/common/extensions/docs/messaging.html
index 19e683d..4d7d884 100644
--- a/chrome/common/extensions/docs/messaging.html
+++ b/chrome/common/extensions/docs/messaging.html
@@ -768,7 +768,7 @@ For more examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/notifications.html b/chrome/common/extensions/docs/notifications.html
index 82c5e07..3afbd73 100644
--- a/chrome/common/extensions/docs/notifications.html
+++ b/chrome/common/extensions/docs/notifications.html
@@ -609,7 +609,7 @@ see the <a href="http://dev.chromium.org/developers/design-documents/desktop-not
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/npapi.html b/chrome/common/extensions/docs/npapi.html
index 8aad2ea..904bff2 100644
--- a/chrome/common/extensions/docs/npapi.html
+++ b/chrome/common/extensions/docs/npapi.html
@@ -567,7 +567,7 @@ avoid making your NPAPI plugin public whenever possible.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/omnibox.html b/chrome/common/extensions/docs/omnibox.html
index 6f7afa7..24fad5e 100644
--- a/chrome/common/extensions/docs/omnibox.html
+++ b/chrome/common/extensions/docs/omnibox.html
@@ -1217,7 +1217,7 @@ You can find samples of this API on the
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/options.html b/chrome/common/extensions/docs/options.html
index 982032f..701630a 100644
--- a/chrome/common/extensions/docs/options.html
+++ b/chrome/common/extensions/docs/options.html
@@ -558,7 +558,7 @@ Favorite Color:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/override.html b/chrome/common/extensions/docs/override.html
index bfa7e7d..6d03561 100644
--- a/chrome/common/extensions/docs/override.html
+++ b/chrome/common/extensions/docs/override.html
@@ -663,7 +663,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/overview.html b/chrome/common/extensions/docs/overview.html
index 49e7d8c..2d5760f 100644
--- a/chrome/common/extensions/docs/overview.html
+++ b/chrome/common/extensions/docs/overview.html
@@ -937,7 +937,7 @@ Here are some ideas for where to go next:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/packaging.html b/chrome/common/extensions/docs/packaging.html
index ccfa542..4939c6c 100644
--- a/chrome/common/extensions/docs/packaging.html
+++ b/chrome/common/extensions/docs/packaging.html
@@ -649,7 +649,7 @@ to create <code>.crx</code> files, see <a href="crx.html">CRX package format</a>
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/pageAction.html b/chrome/common/extensions/docs/pageAction.html
index 36d96af..b086ab8 100644
--- a/chrome/common/extensions/docs/pageAction.html
+++ b/chrome/common/extensions/docs/pageAction.html
@@ -427,6 +427,15 @@ follow these guidelines:</p>
for features that make sense
for most pages.
Use <a href="browserAction.html">browser actions</a> instead.
+ </li><li><b>Do</b> use icons
+ that are slightly lighter weight
+ than <a href="browserAction.html#icon">browser action icons</a>.
+ Most icons that Chrome displays
+ in the location bar
+ are smaller than 19 pixels.
+ If the edge pixels are used,
+ they are usually only used
+ for a faint shadow.
</li><li><b>Don't</b> constantly animate your icon.
That's just annoying.
</li></ul>
@@ -1655,7 +1664,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/permission_warnings.html b/chrome/common/extensions/docs/permission_warnings.html
index eb062e3..1c6ed92 100644
--- a/chrome/common/extensions/docs/permission_warnings.html
+++ b/chrome/common/extensions/docs/permission_warnings.html
@@ -326,21 +326,9 @@
<div id="static"><div id="pageData-name" class="pageData">Permission Warnings</div>
<div id="pageData-showTOC" class="pageData">true</div>
-<!--
-NOTE: When this doc is updated, the online help should also be updated:
-http://www.google.com/support/chrome/bin/answer.py?hl=en&answer=186213
-
-We should periodically look at
-http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?view=markup
-to make sure that we're covering all messages. Search for
-IDS_EXTENSION_PROMPT_WARNING
-(e.g. IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY).
--->
-
<p>
To use most chrome.* APIs and extension capabilities,
-your extension must declare its intent in the
-<a href="manifest.html">manifest</a>,
+your extension must declare its intent in the manifest,
often in the "permissions" field.
Some of these declarations
result in a warning when
@@ -364,7 +352,7 @@ Here's a typical dialog
that a user might see when installing an extension:
</p>
-<img src="images/perms-hw1.png" width="410" height="193" alt="Permission warning: 'It can access: Your data on api.flickr.com'">
+<img src="images/perms-hw1.png" width="387" height="162" alt="Permission warning: 'This extension can access: Your data on api.flickr.com'">
<p>
The warning about access to data on api.flickr.com
@@ -415,7 +403,7 @@ Clicking the Re-enable button
brings up the following warning:
</p>
-<img src="images/perms-hw2.png" width="412" height="220" alt="Permission warning: 'It can access: Your data on api.flickr.com and flickr.com; Your browsing history'">
+<img src="images/perms-hw2.png" width="387" height="190" alt="Permission warning: 'This extension can access: Your data on api.flickr.com and flickr.com; Your browsing history'">
<h2 id="warnings"> Warnings and their triggers </h2>
@@ -426,7 +414,8 @@ results in the seemingly unrelated warning
that the extension can access your browsing history.
The reason for the warning is that
although the <code>chrome.tabs</code> API
-might be used only to open new tabs,
+might be used only to open new tabs
+(<a href="tabs.html#method-create"><code>chrome.tabs.create()</code></a>),
it can also be used to see the URL that's associated
with every newly opened tab
(using their <a href="tabs.html#type-Tab">Tab</a> objects).
@@ -436,14 +425,13 @@ with every newly opened tab
<b>Note:</b>
As of Google Chrome 7,
you no longer need to specify the "tabs" permission
-just to call <code>chrome.tabs.create()</code>
-or <code>chrome.tabs.update()</code>.
+just to call <code>chrome.tabs.create()</code>.
</p>
<p>
The following table lists the warning messages
that users can see,
-along with the manifest entries
+along with the <a href="manifest.html">manifest</a> entries
that trigger them.
</p>
@@ -455,7 +443,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_FULL_ACCESS -->
All data on your computer and the websites you visit
</td>
<td>
@@ -469,7 +457,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_BOOKMARKS -->
Your bookmarks
</td>
<td>
@@ -483,7 +471,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_BROWSING_HISTORY -->
Your browsing history
</td>
<td>
@@ -510,7 +498,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_ALL_HOSTS -->
Your data on all websites
</td>
<td>
@@ -543,8 +531,8 @@ that trigger them.
</tr>
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_?_HOST -->
- <!-- IDS_EXTENSION_PROMPT_WARNING_4_OR_MORE_HOSTS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_?_HOST -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_4_OR_MORE_HOSTS -->
Your data on <em>{list of websites}</em>
</td>
<td>
@@ -577,29 +565,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT -->
- Your list of installed apps, extensions, and themes
- <br>
- <span style="font-weight:normal; font-style:italic">or</span>
- <br>
- Manage themes, extensions, and apps
-
- <!-- PENDING: remove "Manage...apps" alternative message
- once the fix is out on stable channel -->
- <!-- See http://crbug.com/67859 -->
- </td>
- <td>
- "management" permission
- </td>
- <td>
- The "management" permission is required by the
- <a href="management.html"><code>chrome.management</code></a> module.
- </td>
-</tr>
-
-<tr>
- <td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_GEOLOCATION -->
Your physical location
</td>
<td>
@@ -825,7 +791,7 @@ by clicking the <b>chrome://extensions</b> page's
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html
index f57fa01..85ae945 100644
--- a/chrome/common/extensions/docs/samples.html
+++ b/chrome/common/extensions/docs/samples.html
@@ -303,7 +303,7 @@
<!-- STATIC CONTENT PLACEHOLDER -->
<div id="static"><link rel="stylesheet" href="css/samples.css">
-<script>var search_data = {"0262260daf0c8f7b28feff2ef23b05e7abf9d1e0":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","ea2894c41cb8e80a4433a3e6c5772dadce9be90d":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","ede3c47b7757245be42ec33fd5ca63df4b490066":"A BROWSER ACTION WITH NO ICON THAT MAKES THE PAGE RED BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.EXECUTESCRIPT","fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","9a6e4ec46997fb92b324974afa08a3d007e2537f":"ANIMATED PAGE ACTION THIS EXTENSION ADDS AN ANIMATED BROWSER ACTION TO THE TOOLBAR. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.ONCLICKED CHROME.PAGEACTION.SETICON CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED","9747e3d6a3eab39bc7c17f11a80573c62d44c7e5":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","903e7277139e1e6caec123d3319cab295d8d1b3a":"CHROME SOUNDS ENJOY A MORE MAGICAL AND IMMERSIVE EXPERIENCE WHEN BROWSING THE WEB USING THE POWER OF SOUND. BACKGROUND_PAGE BOOKMARKS OPTIONS_PAGE TABS CHROME.BOOKMARKS.ONCREATED CHROME.BOOKMARKS.ONMOVED CHROME.BOOKMARKS.ONREMOVED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED","0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5":"CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL","ac31228200b41a87982e386cc90d3a6eee4ad885":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","7d5d6cf195bc25480256618e360aa38c6e6fba82":"CLD DISPLAYS THE LANGUAGE OF A TAB BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.DETECTLANGUAGE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED","5d81304a17cf7ac2887484f730fbd2b01e51e166":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","4daa6becd0899a54776d9cf7f09613ed1a9f4d77":"COOKIE API TEST EXTENSION TESTING COOKIE API BACKGROUND_PAGE BROWSER_ACTION COOKIES TABS CHROME.BROWSERACTION.ONCLICKED CHROME.COOKIES.GET CHROME.COOKIES.GETALL CHROME.COOKIES.ONCHANGED CHROME.COOKIES.REMOVE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL","6871d09f4a96bf9d4b6cc724d00e909cee0f3902":"CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP://NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","028eb5364924344029bcbe1d527f132fc72b34e5":"EMAIL THIS PAGE (BY GOOGLE) THIS EXTENSION ADDS AN EMAIL BUTTON TO THE TOOLBAR WHICH ALLOWS YOU TO EMAIL THE PAGE LINK USING YOUR DEFAULT MAIL CLIENT OR GMAIL. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.CONNECT CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.UPDATE","763a08e9b06595d785568a8d392b95a2f3700258":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","e3df888a89e35bdeb9c8bc8d03be5e1851b97c68":"EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE","8b0dd31216235941bdd8eb33fda915ef5cf79a82":"GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","4e35caa9742fb82dbd628892d23a781614f6eff6":"GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca":"GOOGLE MAIL CHECKER DISPLAYS THE NUMBER OF UNREAD MESSAGES IN YOUR GOOGLE MAIL INBOX. YOU CAN ALSO CLICK THE BUTTON TO OPEN YOUR INBOX. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","1682e05ea9a1bde985123b04f6f8ac50a8a64033":"GOOGLE WAVE NOTIFIER FIND OUT WHEN YOU HAVE NEW WAVES AND PREVIEW THEM FAST. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","14b9651fda4e57b2a5914ba73a779812201b750a":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","2020d72f2577f53caf8e94e3dbac0fb849ceaa4d":"IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE","0ea1588bd07b20338fc21f725de1542a5fdf9726":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","646325c25f572a1d15edc73d057f821d847a4fbe":"IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE","ec97ec20ca2f095d081e39f1565fc12af09ef067":"MAPPY FINDS ADDRESSES IN THE WEB PAGE YOURE ON AND POPS UP A MAP WINDOW. BACKGROUND_PAGE PAGE_ACTION POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.SENDREQUEST","b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d":"MERGE WINDOWS MERGES ALL OF THE BROWSERS WINDOWS INTO THE CURRENT WINDOW BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.MOVE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT","51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e":"MESSAGE TIMER TIMES HOW LONG IT TAKES TO SEND A MESSAGE TO A CONTENT SCRIPT AND BACK. BROWSER_ACTION POPUP TABS CHROME.EXTENSION.ONCONNECT CHROME.EXTENSION.ONREQUEST CHROME.TABS.CONNECT CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.SENDREQUEST","4f6785ec4f937add6728615682dd37c9a42d9548":"MY BOOKMARKS A BROWSER ACTION WITH A POPUP DUMP OF ALL BOOKMARKS, INCLUDING SEARCH, ADD, EDIT AND DELETE. BOOKMARKS BROWSER_ACTION POPUP TABS CHROME.BOOKMARKS.CREATE CHROME.BOOKMARKS.GET CHROME.BOOKMARKS.GETTREE CHROME.BOOKMARKS.REMOVE CHROME.BOOKMARKS.UPDATE CHROME.TABS.CREATE","597015d3bcce3da693b02314afd607bec4f55291":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.TABS.CREATE","6444e5c8ae112a6a433909c5e770669cd16e2e5f":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","3aea027164cb9b732ba4a8c51cb93708891726ef":"NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","f799e26ceef2367cf836f24bcb47df4398b0df58":"NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS CHROME.TABS.CREATE","e787b322bddbc6289bb31b7d7550b1bf6456a80b":"OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED","8d0a50b57c26bb498be592e871001ffed91541b4":"PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW","80b86ccc6e8520660fa591caa565826f0ed1b12c":"PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED","d74c3c18a1c1dd18b035149105a306f837c8823e":"PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","beff6ecd9677dea0a7c648c5042165b48bb66f09":"PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED","56a8d2ac24ca7bba78fd88ad57f43fc13c784497":"SAMPLE - OAUTH CONTACTS USES OAUTH TO CONNECT TO GOOGLES CONTACTS SERVICE AND DISPLAY A LIST OF YOUR CONTACTS. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","38f6e1e17756ede38b1364c7114a738ca717dcbb":"SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","fc89b35755483af30b66cd72cefa34a43a3e8312":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64":"TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE","e1697cacebad05218798bf3e8a0f724517f0e8c3":"TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED","b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6":"TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE"}</script>
+<script>var search_data = {"0262260daf0c8f7b28feff2ef23b05e7abf9d1e0":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","ea2894c41cb8e80a4433a3e6c5772dadce9be90d":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","ede3c47b7757245be42ec33fd5ca63df4b490066":"A BROWSER ACTION WITH NO ICON THAT MAKES THE PAGE RED BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.EXECUTESCRIPT","fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","9a6e4ec46997fb92b324974afa08a3d007e2537f":"ANIMATED PAGE ACTION THIS EXTENSION ADDS AN ANIMATED BROWSER ACTION TO THE TOOLBAR. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.ONCLICKED CHROME.PAGEACTION.SETICON CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED","a1f7cf79dd555b04fa8d603247a040e644996293":"APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE","9747e3d6a3eab39bc7c17f11a80573c62d44c7e5":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","903e7277139e1e6caec123d3319cab295d8d1b3a":"CHROME SOUNDS ENJOY A MORE MAGICAL AND IMMERSIVE EXPERIENCE WHEN BROWSING THE WEB USING THE POWER OF SOUND. BACKGROUND_PAGE BOOKMARKS OPTIONS_PAGE TABS CHROME.BOOKMARKS.ONCREATED CHROME.BOOKMARKS.ONMOVED CHROME.BOOKMARKS.ONREMOVED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED","0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5":"CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL","ac31228200b41a87982e386cc90d3a6eee4ad885":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","7d5d6cf195bc25480256618e360aa38c6e6fba82":"CLD DISPLAYS THE LANGUAGE OF A TAB BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.DETECTLANGUAGE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED","5d81304a17cf7ac2887484f730fbd2b01e51e166":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","4daa6becd0899a54776d9cf7f09613ed1a9f4d77":"COOKIE API TEST EXTENSION TESTING COOKIE API BACKGROUND_PAGE BROWSER_ACTION COOKIES TABS CHROME.BROWSERACTION.ONCLICKED CHROME.COOKIES.GET CHROME.COOKIES.GETALL CHROME.COOKIES.ONCHANGED CHROME.COOKIES.REMOVE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL","6871d09f4a96bf9d4b6cc724d00e909cee0f3902":"CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP://NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","028eb5364924344029bcbe1d527f132fc72b34e5":"EMAIL THIS PAGE (BY GOOGLE) THIS EXTENSION ADDS AN EMAIL BUTTON TO THE TOOLBAR WHICH ALLOWS YOU TO EMAIL THE PAGE LINK USING YOUR DEFAULT MAIL CLIENT OR GMAIL. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.CONNECT CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.UPDATE","763a08e9b06595d785568a8d392b95a2f3700258":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","e3df888a89e35bdeb9c8bc8d03be5e1851b97c68":"EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE","8b0dd31216235941bdd8eb33fda915ef5cf79a82":"GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","4e35caa9742fb82dbd628892d23a781614f6eff6":"GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca":"GOOGLE MAIL CHECKER DISPLAYS THE NUMBER OF UNREAD MESSAGES IN YOUR GOOGLE MAIL INBOX. YOU CAN ALSO CLICK THE BUTTON TO OPEN YOUR INBOX. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","1682e05ea9a1bde985123b04f6f8ac50a8a64033":"GOOGLE WAVE NOTIFIER FIND OUT WHEN YOU HAVE NEW WAVES AND PREVIEW THEM FAST. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","14b9651fda4e57b2a5914ba73a779812201b750a":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","2020d72f2577f53caf8e94e3dbac0fb849ceaa4d":"IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE","0ea1588bd07b20338fc21f725de1542a5fdf9726":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","646325c25f572a1d15edc73d057f821d847a4fbe":"IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE","ec97ec20ca2f095d081e39f1565fc12af09ef067":"MAPPY FINDS ADDRESSES IN THE WEB PAGE YOURE ON AND POPS UP A MAP WINDOW. BACKGROUND_PAGE PAGE_ACTION POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.SENDREQUEST","b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d":"MERGE WINDOWS MERGES ALL OF THE BROWSERS WINDOWS INTO THE CURRENT WINDOW BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.MOVE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT","51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e":"MESSAGE TIMER TIMES HOW LONG IT TAKES TO SEND A MESSAGE TO A CONTENT SCRIPT AND BACK. BROWSER_ACTION POPUP TABS CHROME.EXTENSION.ONCONNECT CHROME.EXTENSION.ONREQUEST CHROME.TABS.CONNECT CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.SENDREQUEST","4f6785ec4f937add6728615682dd37c9a42d9548":"MY BOOKMARKS A BROWSER ACTION WITH A POPUP DUMP OF ALL BOOKMARKS, INCLUDING SEARCH, ADD, EDIT AND DELETE. BOOKMARKS BROWSER_ACTION POPUP TABS CHROME.BOOKMARKS.CREATE CHROME.BOOKMARKS.GET CHROME.BOOKMARKS.GETTREE CHROME.BOOKMARKS.REMOVE CHROME.BOOKMARKS.UPDATE CHROME.TABS.CREATE","597015d3bcce3da693b02314afd607bec4f55291":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.TABS.CREATE","6444e5c8ae112a6a433909c5e770669cd16e2e5f":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","3aea027164cb9b732ba4a8c51cb93708891726ef":"NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","f799e26ceef2367cf836f24bcb47df4398b0df58":"NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS CHROME.TABS.CREATE","e787b322bddbc6289bb31b7d7550b1bf6456a80b":"OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED","8d0a50b57c26bb498be592e871001ffed91541b4":"PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW","80b86ccc6e8520660fa591caa565826f0ed1b12c":"PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED","d74c3c18a1c1dd18b035149105a306f837c8823e":"PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","beff6ecd9677dea0a7c648c5042165b48bb66f09":"PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED","56a8d2ac24ca7bba78fd88ad57f43fc13c784497":"SAMPLE - OAUTH CONTACTS USES OAUTH TO CONNECT TO GOOGLES CONTACTS SERVICE AND DISPLAY A LIST OF YOUR CONTACTS. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","38f6e1e17756ede38b1364c7114a738ca717dcbb":"SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","fc89b35755483af30b66cd72cefa34a43a3e8312":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64":"TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE","e1697cacebad05218798bf3e8a0f724517f0e8c3":"TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED","b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6":"TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE"}</script>
<script src="js/sample_search.js"></script>
@@ -558,6 +558,51 @@
</ul>
</div>
<div><a href="examples/api/pageAction/set_icon.zip">Download .zip</a></div>
+</div><div class="sample" id="a1f7cf79dd555b04fa8d603247a040e644996293">
+ <img class="icon" style="display: none; ">
+ <img class="icon" src="images/sample-default-icon.png">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/">App Launcher</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>management</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p></p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="management.html#method-get">chrome.management.get</a></code>
+ </li><li>
+ <code><a href="management.html#method-getAll">chrome.management.getAll</a></code>
+ </li><li>
+ <code><a href="management.html#method-launchApp">chrome.management.launchApp</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li>
+ </ul>
+ </div>
+ <div class="sourcefiles"><strong>Source files:</strong>
+ <ul>
+ <li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css?content-type=text/plain">popup.css</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html?content-type=text/plain">popup.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js?content-type=text/plain">popup.js</a></code>
+ </li>
+ </ul>
+ </div>
+ <div><a href="examples/extensions/app_launcher.zip">Download .zip</a></div>
</div><div class="sample" id="9747e3d6a3eab39bc7c17f11a80573c62d44c7e5">
<img class="icon" style="display: none; ">
<img class="icon" src="images/sample-default-icon.png">
@@ -2777,7 +2822,7 @@
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json
index 89ffe2e..9e70b0c 100644
--- a/chrome/common/extensions/docs/samples.json
+++ b/chrome/common/extensions/docs/samples.json
@@ -279,6 +279,34 @@
"zip_path": "examples/api/pageAction/set_icon.zip"
},
{
+ "api_calls": [
+ "chrome.extension.getURL",
+ "chrome.management.get",
+ "chrome.management.getAll",
+ "chrome.management.launchApp",
+ "chrome.tabs.create"
+ ],
+ "description": "",
+ "features": [
+ "browser_action",
+ "management"
+ ],
+ "icon": null,
+ "id": "a1f7cf79dd555b04fa8d603247a040e644996293",
+ "name": "App Launcher",
+ "path": "examples/extensions/app_launcher/",
+ "protocols": [],
+ "search_string": "APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE",
+ "source_files": [
+ "manifest.json",
+ "popup.css",
+ "popup.html",
+ "popup.js"
+ ],
+ "source_hash": "4cb1348cfca9c990117d52290f93eb5fc5081bc2",
+ "zip_path": "examples/extensions/app_launcher.zip"
+ },
+ {
"api_calls": [],
"description": "",
"features": [
@@ -373,7 +401,7 @@
"options.html",
"popup.html"
],
- "source_hash": "bbd36a3d1d5580b477929d081f5a3a467ad32c63",
+ "source_hash": "a6ad5cd2a77ef54c0d96b4c5da014cfac34487db",
"zip_path": "examples/extensions/buildbot.zip"
},
{
@@ -404,7 +432,7 @@
"background.html",
"manifest.json"
],
- "source_hash": "37dd43080094bbe459b0429f1a2b995c33bab7c3",
+ "source_hash": "027409688a677867e3f2fcbc530ceac904ccedea",
"zip_path": "examples/extensions/chrome_search.zip"
},
{
@@ -913,7 +941,7 @@
"info.html",
"manifest.json"
],
- "source_hash": "672f49ed8edbe0829c7ba5a1d890b4440b157991",
+ "source_hash": "c746d9114348f4b414c1ec05e988e2807feb963a",
"zip_path": "examples/extensions/imageinfo.zip"
},
{
@@ -1286,7 +1314,7 @@
"util/sorttable.js",
"util/table2CSV.js"
],
- "source_hash": "7b6fde63c8dd0e626d176e8ce34ad43649746436",
+ "source_hash": "7e592dbd3446353f7d98d1760f7cd773035aaaad",
"zip_path": "examples/extensions/benchmark.zip"
},
{
diff --git a/chrome/common/extensions/docs/server/chromeextensionsdocs.py b/chrome/common/extensions/docs/server/chromeextensionsdocs.py
index 9edf5cd..a3778f4 100644
--- a/chrome/common/extensions/docs/server/chromeextensionsdocs.py
+++ b/chrome/common/extensions/docs/server/chromeextensionsdocs.py
@@ -6,6 +6,7 @@
import cgi
import logging
import re
+import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
@@ -43,10 +44,10 @@ DEFAULT_CACHE_TIME = 300
class MainPage(webapp.RequestHandler):
# get page from memcache, or else fetch it from src
def get(self):
- path = self.request.path
+ path = os.path.realpath(os.path.join('/', self.request.path))
# special path to invoke the unit tests
# TODO(nickbaum): is there a less ghetto way to invoke the unit test?
- if path == "/test/":
+ if path == "/test":
self.unitTest()
return
# if root, redirect to index.html
diff --git a/chrome/common/extensions/docs/static/apps.html b/chrome/common/extensions/docs/static/apps.html
index b4696bb..2cf3944 100644
--- a/chrome/common/extensions/docs/static/apps.html
+++ b/chrome/common/extensions/docs/static/apps.html
@@ -60,7 +60,7 @@ extensions and packaged apps, and packaged apps and hosted apps:
<ul>
<li> <a href="http://code.google.com/chrome/apps/articles/thinking_in_web_apps.html">Thinking in Web Apps</a> </li>
- <li> <a href="http://codesite-staging:29006/chrome/webstore/articles/apps_vs_extensions.html">Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store</a> </li>
+ <li> <a href="http://code.google.com/chrome/webstore/articles/apps_vs_extensions.html">Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store</a> </li>
</ul>
diff --git a/chrome/common/extensions/docs/static/getstarted.html b/chrome/common/extensions/docs/static/getstarted.html
index f1ec273..1121b58 100644
--- a/chrome/common/extensions/docs/static/getstarted.html
+++ b/chrome/common/extensions/docs/static/getstarted.html
@@ -65,6 +65,7 @@ to the toolbar of Google Chrome.
<img src="images/toolsmenu.gif" width="29" height="29" alt=""
style="margin-top:0" />
and choosing <b>Tools > Extensions</b>.
+ (On Mac, use <b>Window > Extensions</b>.)
</li>
<li>
diff --git a/chrome/common/extensions/docs/static/manifest.html b/chrome/common/extensions/docs/static/manifest.html
index 3f2f34e..aed4953 100644
--- a/chrome/common/extensions/docs/static/manifest.html
+++ b/chrome/common/extensions/docs/static/manifest.html
@@ -111,9 +111,8 @@ see <a href="i18n.html">Internationalization</a> for details.
The URL of the homepage for this extension. The extensions management page (chrome://extensions)
will contain a link to this URL. This field is particularly useful if you
<a href="hosting.html">host the extension on your own site</a>. If you distribute your
-extension using the <a href="https://chrome.google.com/extensions">Extensions Gallery</a>,
-the homepage URL defaults to the extension's own gallery page.
-<!-- PENDING: check whether the same is true of the store -->
+extension using the <a href="https://chrome.google.com/extensions">Extensions Gallery</a> or <a href="https://chrome.google.com/webstore">Chrome Web Store</a>,
+the homepage URL defaults to the extension's own page.
</p>
<h3 id="icons">icons</h3>
diff --git a/chrome/common/extensions/docs/static/pageAction.html b/chrome/common/extensions/docs/static/pageAction.html
index 60933ff..3def87e 100644
--- a/chrome/common/extensions/docs/static/pageAction.html
+++ b/chrome/common/extensions/docs/static/pageAction.html
@@ -95,6 +95,15 @@ follow these guidelines:</p>
for features that make sense
for most pages.
Use <a href="browserAction.html">browser actions</a> instead.
+ <li><b>Do</b> use icons
+ that are slightly lighter weight
+ than <a href="browserAction.html#icon">browser action icons</a>.
+ Most icons that Chrome displays
+ in the location bar
+ are smaller than 19 pixels.
+ If the edge pixels are used,
+ they are usually only used
+ for a faint shadow.
<li><b>Don't</b> constantly animate your icon.
That's just annoying.
</ul>
diff --git a/chrome/common/extensions/docs/static/permission_warnings.html b/chrome/common/extensions/docs/static/permission_warnings.html
index 4671f58..eea6558 100644
--- a/chrome/common/extensions/docs/static/permission_warnings.html
+++ b/chrome/common/extensions/docs/static/permission_warnings.html
@@ -1,21 +1,9 @@
<div id="pageData-name" class="pageData">Permission Warnings</div>
<div id="pageData-showTOC" class="pageData">true</div>
-<!--
-NOTE: When this doc is updated, the online help should also be updated:
-http://www.google.com/support/chrome/bin/answer.py?hl=en&answer=186213
-
-We should periodically look at
-http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?view=markup
-to make sure that we're covering all messages. Search for
-IDS_EXTENSION_PROMPT_WARNING
-(e.g. IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY).
--->
-
<p>
To use most chrome.* APIs and extension capabilities,
-your extension must declare its intent in the
-<a href="manifest.html">manifest</a>,
+your extension must declare its intent in the manifest,
often in the "permissions" field.
Some of these declarations
result in a warning when
@@ -40,8 +28,8 @@ that a user might see when installing an extension:
</p>
<img src="images/perms-hw1.png"
- width="410" height="193"
- alt="Permission warning: 'It can access: Your data on api.flickr.com'"
+ width="387" height="162"
+ alt="Permission warning: 'This extension can access: Your data on api.flickr.com'"
/>
<p>
@@ -99,8 +87,8 @@ brings up the following warning:
</p>
<img src="images/perms-hw2.png"
- width="412" height="220"
- alt="Permission warning: 'It can access: Your data on api.flickr.com and flickr.com; Your browsing history'"
+ width="387" height="190"
+ alt="Permission warning: 'This extension can access: Your data on api.flickr.com and flickr.com; Your browsing history'"
/>
@@ -112,7 +100,8 @@ results in the seemingly unrelated warning
that the extension can access your browsing history.
The reason for the warning is that
although the <code>chrome.tabs</code> API
-might be used only to open new tabs,
+might be used only to open new tabs
+(<a href="tabs.html#method-create"><code>chrome.tabs.create()</code></a>),
it can also be used to see the URL that's associated
with every newly opened tab
(using their <a href="tabs.html#type-Tab">Tab</a> objects).
@@ -122,14 +111,13 @@ with every newly opened tab
<b>Note:</b>
As of Google Chrome 7,
you no longer need to specify the "tabs" permission
-just to call <code>chrome.tabs.create()</code>
-or <code>chrome.tabs.update()</code>.
+just to call <code>chrome.tabs.create()</code>.
</p>
<p>
The following table lists the warning messages
that users can see,
-along with the manifest entries
+along with the <a href="manifest.html">manifest</a> entries
that trigger them.
</p>
@@ -141,7 +129,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_FULL_ACCESS -->
All data on your computer and the websites you visit
</td>
<td>
@@ -155,7 +143,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_BOOKMARKS -->
Your bookmarks
</td>
<td>
@@ -169,7 +157,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_BROWSING_HISTORY -->
Your browsing history
</td>
<td>
@@ -196,7 +184,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_ALL_HOSTS -->
Your data on all websites
</td>
<td>
@@ -229,8 +217,8 @@ that trigger them.
</tr>
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_?_HOST -->
- <!-- IDS_EXTENSION_PROMPT_WARNING_4_OR_MORE_HOSTS -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_?_HOST -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_4_OR_MORE_HOSTS -->
Your data on <em>{list of websites}</em>
</td>
<td>
@@ -263,29 +251,7 @@ that trigger them.
<tr>
<td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT -->
- Your list of installed apps, extensions, and themes
- <br />
- <span style="font-weight:normal; font-style:italic">or</span>
- <br />
- Manage themes, extensions, and apps
-
- <!-- PENDING: remove "Manage...apps" alternative message
- once the fix is out on stable channel -->
- <!-- See http://crbug.com/67859 -->
- </td>
- <td>
- "management" permission
- </td>
- <td>
- The "management" permission is required by the
- <a href="management.html"><code>chrome.management</code></a> module.
- </td>
-</tr>
-
-<tr>
- <td style="font-weight:bold">
- <!-- IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION -->
+ <!-- IDS_EXTENSION_PROMPT2_WARNING_GEOLOCATION -->
Your physical location
</td>
<td>
diff --git a/chrome/common/extensions/docs/static/themes.html b/chrome/common/extensions/docs/static/themes.html
index 651a74d..0d04779 100644
--- a/chrome/common/extensions/docs/static/themes.html
+++ b/chrome/common/extensions/docs/static/themes.html
@@ -66,7 +66,7 @@ file for a theme:
Colors are in RGB format.
To find the strings you can use within the "colors" field,
look for kColor* strings in
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
</p>
<h3 id="images">images</h3>
@@ -75,7 +75,7 @@ look for kColor* strings in
Image resources use paths relative to the root of the extension.
You can override any of the images that are specified by
<code>kThemeableImages</code> in
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
Just remove the "IDR_"
and convert the remaining characters to lowercase.
For example, <code>IDR_THEME_NTP_BACKGROUND</code>
@@ -92,7 +92,7 @@ properties such as background alignment,
background repeat,
and an alternate logo.
To see the properties and the values they can have, see
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
<!-- [PENDING: We should flesh this out.] -->
</p>
@@ -106,7 +106,7 @@ because images don't work across platforms
and are brittle in the case of adding new buttons.
To find the strings you can use within the "tints" field,
look for kTint* strings in
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
</p>
<p>
diff --git a/chrome/common/extensions/docs/static/tut_debugging.html b/chrome/common/extensions/docs/static/tut_debugging.html
index 7713e90..20d46c5 100644
--- a/chrome/common/extensions/docs/static/tut_debugging.html
+++ b/chrome/common/extensions/docs/static/tut_debugging.html
@@ -38,7 +38,7 @@ in the Extensions page.
find the extension files and load them.
If you don't have a handy copy of the files,
extract them from this
- <a href="examples/tutorials/getstarted.zip">ZIP file</a>.
+ <a href="examples/tutorials/getstarted/getstarted.zip">ZIP file</a>.
See Getting Started if you need
<a href="getstarted.html#load-ext">instructions
for loading the extension</a>.
diff --git a/chrome/common/extensions/docs/tabs.html b/chrome/common/extensions/docs/tabs.html
index 27b26be..cf7d2f6 100644
--- a/chrome/common/extensions/docs/tabs.html
+++ b/chrome/common/extensions/docs/tabs.html
@@ -7373,7 +7373,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/template/api_template.html b/chrome/common/extensions/docs/template/api_template.html
index 1b47011..b495e8d 100644
--- a/chrome/common/extensions/docs/template/api_template.html
+++ b/chrome/common/extensions/docs/template/api_template.html
@@ -471,7 +471,7 @@
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- &copy;2011 Google
+ &copy;2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/themes.html b/chrome/common/extensions/docs/themes.html
index 57c8063..b488a9d 100644
--- a/chrome/common/extensions/docs/themes.html
+++ b/chrome/common/extensions/docs/themes.html
@@ -379,7 +379,7 @@ file for a theme:
Colors are in RGB format.
To find the strings you can use within the "colors" field,
look for kColor* strings in
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
</p>
<h3 id="images">images</h3>
@@ -388,7 +388,7 @@ look for kColor* strings in
Image resources use paths relative to the root of the extension.
You can override any of the images that are specified by
<code>kThemeableImages</code> in
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
Just remove the "IDR_"
and convert the remaining characters to lowercase.
For example, <code>IDR_THEME_NTP_BACKGROUND</code>
@@ -405,7 +405,7 @@ properties such as background alignment,
background repeat,
and an alternate logo.
To see the properties and the values they can have, see
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
<!-- [PENDING: We should flesh this out.] -->
</p>
@@ -419,7 +419,7 @@ because images don't work across platforms
and are brittle in the case of adding new buttons.
To find the strings you can use within the "tints" field,
look for kTint* strings in
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
+<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>.
</p>
<p>
@@ -627,7 +627,7 @@ Community-written documentation to help you write themes is here:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/tut_analytics.html b/chrome/common/extensions/docs/tut_analytics.html
index 4c695ff..d6a070f 100644
--- a/chrome/common/extensions/docs/tut_analytics.html
+++ b/chrome/common/extensions/docs/tut_analytics.html
@@ -695,7 +695,7 @@ extension.</p>
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/tut_debugging.html b/chrome/common/extensions/docs/tut_debugging.html
index 821c8e9..64a4ae1 100644
--- a/chrome/common/extensions/docs/tut_debugging.html
+++ b/chrome/common/extensions/docs/tut_debugging.html
@@ -368,7 +368,7 @@ in the Extensions page.
find the extension files and load them.
If you don't have a handy copy of the files,
extract them from this
- <a href="examples/tutorials/getstarted.zip">ZIP file</a>.
+ <a href="examples/tutorials/getstarted/getstarted.zip">ZIP file</a>.
See Getting Started if you need
<a href="getstarted.html#load-ext">instructions
for loading the extension</a>.
@@ -743,7 +743,7 @@ of Getting Started.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/tut_oauth.html b/chrome/common/extensions/docs/tut_oauth.html
index 1d21c96..1783eda 100644
--- a/chrome/common/extensions/docs/tut_oauth.html
+++ b/chrome/common/extensions/docs/tut_oauth.html
@@ -685,7 +685,7 @@ Sample extensions that use these techniques are available in the Chromium source
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/tutorials.html b/chrome/common/extensions/docs/tutorials.html
index 8657aed..b88a9cf 100644
--- a/chrome/common/extensions/docs/tutorials.html
+++ b/chrome/common/extensions/docs/tutorials.html
@@ -498,7 +498,7 @@ more specialized topics:
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/whats_new.html b/chrome/common/extensions/docs/whats_new.html
index 9e2b8ed..79d6835 100644
--- a/chrome/common/extensions/docs/whats_new.html
+++ b/chrome/common/extensions/docs/whats_new.html
@@ -610,7 +610,7 @@ No API or manifest changes worth noting.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/windows.html b/chrome/common/extensions/docs/windows.html
index ad163a2..1332caf 100644
--- a/chrome/common/extensions/docs/windows.html
+++ b/chrome/common/extensions/docs/windows.html
@@ -616,6 +616,64 @@ For other examples and for help in viewing the source code, see
</div><div>
<div>
<dt>
+ <var>tabId</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 for which you want to adopt to the new window.</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>
+
+ <!-- FUNCTION PARAMETERS -->
+ <dd style="display: none; ">
+ <div></div>
+ </dd>
+
+ </div>
+ </div><div>
+ <div>
+ <dt>
<var>left</var>
<em>
@@ -3668,7 +3726,7 @@ For other examples and for help in viewing the source code, see
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/docs/xhr.html b/chrome/common/extensions/docs/xhr.html
index 4710c3e..b76acc5 100644
--- a/chrome/common/extensions/docs/xhr.html
+++ b/chrome/common/extensions/docs/xhr.html
@@ -628,7 +628,7 @@ prefer HTTPS whenever possible.
<a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
</p>
<p>
- ©2011 Google
+ ©2010 Google
</p>
<!-- begin analytics -->
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
index c49399a..bdbb33a 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -31,7 +31,6 @@
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/user_script.h"
-#include "chrome/common/notification_service.h"
#include "chrome/common/url_constants.h"
#include "googleurl/src/url_util.h"
#include "grit/chromium_strings.h"
@@ -133,7 +132,7 @@ const size_t kNumNonPermissionFunctionNames =
// A singleton object containing global data needed by the extension objects.
class ExtensionConfig {
public:
- static ExtensionConfig* GetSingleton() {
+ static ExtensionConfig* GetInstance() {
return Singleton<ExtensionConfig>::get();
}
@@ -288,7 +287,7 @@ GURL Extension::GalleryUpdateUrl(bool secure) {
// static
int Extension::GetPermissionMessageId(const std::string& permission) {
- return ExtensionConfig::GetSingleton()->GetPermissionMessageId(permission);
+ return ExtensionConfig::GetInstance()->GetPermissionMessageId(permission);
}
std::vector<string16> Extension::GetPermissionMessages() const {
@@ -470,7 +469,7 @@ std::string Extension::GenerateIdForPath(const FilePath& path) {
return id;
}
-Extension::HistogramType Extension::GetHistogramType() const {
+Extension::Type Extension::GetType() const {
if (is_theme())
return TYPE_THEME;
if (converted_from_user_script())
@@ -1267,8 +1266,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key,
*error = errors::kInvalidVersion;
return false;
}
- version_.reset(
- Version::GetVersionFromString(version_str));
+ version_.reset(Version::GetVersionFromString(version_str));
if (!version_.get() ||
version_->components().size() > 4) {
*error = errors::kInvalidVersion;
@@ -1742,6 +1740,15 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key,
if (web_extent().is_empty() || location() == Extension::COMPONENT) {
// Check if it's a module permission. If so, enable that permission.
if (IsAPIPermission(permission_str)) {
+ // Only allow the experimental API permission if the command line
+ // flag is present, or if the extension is a component of Chrome.
+ if (permission_str == Extension::kExperimentalPermission &&
+ !CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableExperimentalExtensionApis) &&
+ location() != Extension::COMPONENT) {
+ *error = errors::kExperimentalFlagRequired;
+ return false;
+ }
api_permissions_.insert(permission_str);
continue;
}
@@ -1781,9 +1788,8 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key,
}
if (source.HasKey(keys::kDefaultLocale)) {
- if (!source.GetString(keys::kDefaultLocale,
- &default_locale_) ||
- default_locale_.empty()) {
+ if (!source.GetString(keys::kDefaultLocale, &default_locale_) ||
+ !l10n_util::IsValidLocaleSyntax(default_locale_)) {
*error = errors::kInvalidDefaultLocale;
return false;
}
@@ -1846,6 +1852,59 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key,
devtools_url_ = GetResourceURL(devtools_str);
}
+ // Initialize text-to-speech voices (optional).
+ if (source.HasKey(keys::kTts)) {
+ DictionaryValue* tts_dict;
+ if (!source.GetDictionary(keys::kTts, &tts_dict)) {
+ *error = errors::kInvalidTts;
+ return false;
+ }
+
+ if (tts_dict->HasKey(keys::kTtsVoices)) {
+ ListValue* tts_voices;
+ if (!tts_dict->GetList(keys::kTtsVoices, &tts_voices)) {
+ *error = errors::kInvalidTtsVoices;
+ return false;
+ }
+
+ for (size_t i = 0; i < tts_voices->GetSize(); i++) {
+ DictionaryValue* one_tts_voice;
+ if (!tts_voices->GetDictionary(i, &one_tts_voice)) {
+ *error = errors::kInvalidTtsVoices;
+ return false;
+ }
+
+ TtsVoice voice_data;
+ if (one_tts_voice->HasKey(keys::kTtsVoicesVoiceName)) {
+ if (!one_tts_voice->GetString(
+ keys::kTtsVoicesVoiceName, &voice_data.voice_name)) {
+ *error = errors::kInvalidTtsVoicesVoiceName;
+ return false;
+ }
+ }
+ if (one_tts_voice->HasKey(keys::kTtsVoicesLocale)) {
+ if (!one_tts_voice->GetString(
+ keys::kTtsVoicesLocale, &voice_data.locale) ||
+ !l10n_util::IsValidLocaleSyntax(voice_data.locale)) {
+ *error = errors::kInvalidTtsVoicesLocale;
+ return false;
+ }
+ }
+ if (one_tts_voice->HasKey(keys::kTtsVoicesGender)) {
+ if (!one_tts_voice->GetString(
+ keys::kTtsVoicesGender, &voice_data.gender) ||
+ (voice_data.gender != keys::kTtsGenderMale &&
+ voice_data.gender != keys::kTtsGenderFemale)) {
+ *error = errors::kInvalidTtsVoicesGender;
+ return false;
+ }
+ }
+
+ tts_voices_.push_back(voice_data);
+ }
+ }
+ }
+
// Initialize incognito behavior. Apps default to split mode, extensions
// default to spanning.
incognito_split_mode_ = is_app();
@@ -1966,7 +2025,7 @@ static std::string SizeToString(const gfx::Size& max_size) {
void Extension::SetScriptingWhitelist(
const std::vector<std::string>& whitelist) {
ScriptingWhitelist* current_whitelist =
- ExtensionConfig::GetSingleton()->whitelist();
+ ExtensionConfig::GetInstance()->whitelist();
current_whitelist->clear();
for (ScriptingWhitelist::const_iterator it = whitelist.begin();
it != whitelist.end(); ++it) {
@@ -2201,20 +2260,7 @@ bool Extension::HasFullPermissions() const {
bool Extension::IsAPIPermission(const std::string& str) const {
for (size_t i = 0; i < Extension::kNumPermissions; ++i) {
if (str == Extension::kPermissions[i].name) {
- // Only allow the experimental API permission if the command line
- // flag is present, or if the extension is a component of Chrome.
- if (str == Extension::kExperimentalPermission) {
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableExperimentalExtensionApis)) {
- return true;
- } else if (location() == Extension::COMPONENT) {
- return true;
- } else {
- return false;
- }
- } else {
- return true;
- }
+ return true;
}
}
return false;
@@ -2225,7 +2271,7 @@ bool Extension::CanExecuteScriptEverywhere() const {
return true;
ScriptingWhitelist* whitelist =
- ExtensionConfig::GetSingleton()->whitelist();
+ ExtensionConfig::GetInstance()->whitelist();
for (ScriptingWhitelist::const_iterator it = whitelist->begin();
it != whitelist->end(); ++it) {
@@ -2260,9 +2306,15 @@ UninstalledExtensionInfo::UninstalledExtensionInfo(
const Extension& extension)
: extension_id(extension.id()),
extension_api_permissions(extension.api_permissions()),
- is_theme(extension.is_theme()),
- is_app(extension.is_app()),
- converted_from_user_script(extension.converted_from_user_script()),
+ extension_type(extension.GetType()),
update_url(extension.update_url()) {}
UninstalledExtensionInfo::~UninstalledExtensionInfo() {}
+
+
+UnloadedExtensionInfo::UnloadedExtensionInfo(
+ const Extension* extension,
+ Reason reason)
+ : reason(reason),
+ already_disabled(false),
+ extension(extension) {}
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index 0d171d8..4c82fd6 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -83,9 +83,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
EXTENSION_ICON_BITTY = 16,
};
- // Type used for UMA_HISTOGRAM_ENUMERATION about extensions.
- // Do not change the order of entries or remove entries in this list.
- enum HistogramType {
+ // Do not change the order of entries or remove entries in this list
+ // as this is used in UMA_HISTOGRAM_ENUMERATIONs about extensions.
+ enum Type {
TYPE_UNKNOWN = 0,
TYPE_EXTENSION,
TYPE_THEME,
@@ -100,6 +100,12 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
bool is_public; // False if only this extension can load this plugin.
};
+ struct TtsVoice {
+ std::string voice_name;
+ std::string locale;
+ std::string gender;
+ };
+
// A permission is defined by its |name| (what is used in the manifest),
// and the |message_id| that's used by install/update UI.
struct Permission {
@@ -227,8 +233,8 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
IsExternalLocation(location);
}
- // See HistogramType definition above.
- HistogramType GetHistogramType() const;
+ // See Type definition above.
+ Type GetType() const;
// Returns an absolute url to a resource inside of an extension. The
// |extension_url| argument should be the url() from an Extension object. The
@@ -296,8 +302,8 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Returns the url prefix for the extension/apps gallery. Can be set via the
// --apps-gallery-url switch. The URL returned will not contain a trailing
// slash. Do not use this as a prefix/extent for the store. Instead see
- // ExtensionsService::GetWebStoreApp or
- // ExtensionsService::IsDownloadFromGallery
+ // ExtensionService::GetWebStoreApp or
+ // ExtensionService::IsDownloadFromGallery
static std::string ChromeStoreLaunchURL();
// Helper function that consolidates the check for whether the script can
@@ -428,6 +434,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
}
const std::string omnibox_keyword() const { return omnibox_keyword_; }
bool incognito_split_mode() const { return incognito_split_mode_; }
+ const std::vector<TtsVoice>& tts_voices() const { return tts_voices_; }
// App-related.
bool is_app() const { return is_app_; }
@@ -691,7 +698,10 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// The Omnibox keyword for this extension, or empty if there is none.
std::string omnibox_keyword_;
- FRIEND_TEST_ALL_PREFIXES(ExtensionsServiceTest,
+ // List of text-to-speech voices that this extension provides, if any.
+ std::vector<TtsVoice> tts_voices_;
+
+ FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
UpdateExtensionPreservesLocation);
FRIEND_TEST_ALL_PREFIXES(ExtensionTest, LoadPageActionHelper);
FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueInvalid);
@@ -730,12 +740,26 @@ struct UninstalledExtensionInfo {
std::string extension_id;
std::set<std::string> extension_api_permissions;
- // TODO(akalin): Once we have a unified ExtensionType, replace the
- // below member variables with a member of that type.
- bool is_theme;
- bool is_app;
- bool converted_from_user_script;
+ Extension::Type extension_type;
GURL update_url;
};
+struct UnloadedExtensionInfo {
+ enum Reason {
+ DISABLE, // The extension is being disabled.
+ UPDATE, // The extension is being updated to a newer version.
+ UNINSTALL, // The extension is being uninstalled.
+ };
+
+ Reason reason;
+
+ // Was the extension already disabled?
+ bool already_disabled;
+
+ // The extension being unloaded - this should always be non-NULL.
+ const Extension* extension;
+
+ UnloadedExtensionInfo(const Extension* extension, Reason reason);
+};
+
#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_
diff --git a/chrome/common/extensions/extension_constants.cc b/chrome/common/extensions/extension_constants.cc
index 2e99e2b..dd15afa 100644
--- a/chrome/common/extensions/extension_constants.cc
+++ b/chrome/common/extensions/extension_constants.cc
@@ -60,6 +60,13 @@ const char* kThemeImages = "images";
const char* kThemeTints = "tints";
const char* kToolstripPath = "path";
const char* kToolstrips = "toolstrips";
+const char* kTts = "tts";
+const char* kTtsGenderFemale = "female";
+const char* kTtsGenderMale = "male";
+const char* kTtsVoices = "voices";
+const char* kTtsVoicesGender = "gender";
+const char* kTtsVoicesLocale = "locale";
+const char* kTtsVoicesVoiceName = "voiceName";
const char* kType = "type";
const char* kUpdateURL = "update_url";
const char* kVersion = "version";
@@ -98,6 +105,9 @@ const char* kDisabledByPolicy =
const char* kDevToolsExperimental =
"You must request the 'experimental' permission in order to use the"
" DevTools API.";
+const char* kExperimentalFlagRequired =
+ "Loading extensions with 'experimental' permission requires"
+ " --enable-experimental-extension-apis command line flag.";
const char* kHostedAppsCannotIncludeExtensionFeatures =
"Hosted apps cannot use extension features.";
const char* kInvalidAllFrames =
@@ -231,6 +241,16 @@ const char* kInvalidToolstrip =
"Invalid value for 'toolstrips[*]'";
const char* kInvalidToolstrips =
"Invalid value for 'toolstrips'.";
+const char* kInvalidTts =
+ "Invalid value for 'tts'.";
+const char* kInvalidTtsVoices =
+ "Invalid value for 'tts.voices'.";
+const char* kInvalidTtsVoicesGender =
+ "Invalid value for 'tts.voices[*].gender'.";
+const char* kInvalidTtsVoicesLocale =
+ "Invalid value for 'tts.voices[*].locale'.";
+const char* kInvalidTtsVoicesVoiceName =
+ "Invalid value for 'tts.voices[*].voiceName'.";
const char* kInvalidUpdateURL =
"Invalid value for update url: '[*]'.";
const char* kInvalidVersion =
diff --git a/chrome/common/extensions/extension_constants.h b/chrome/common/extensions/extension_constants.h
index cf09515..7f09630 100644
--- a/chrome/common/extensions/extension_constants.h
+++ b/chrome/common/extensions/extension_constants.h
@@ -65,6 +65,13 @@ namespace extension_manifest_keys {
extern const char* kThemeTints;
extern const char* kToolstripPath;
extern const char* kToolstrips;
+ extern const char* kTts;
+ extern const char* kTtsGenderFemale;
+ extern const char* kTtsGenderMale;
+ extern const char* kTtsVoices;
+ extern const char* kTtsVoicesGender;
+ extern const char* kTtsVoicesLocale;
+ extern const char* kTtsVoicesVoiceName;
extern const char* kType;
extern const char* kUpdateURL;
extern const char* kVersion;
@@ -92,6 +99,8 @@ namespace extension_manifest_errors {
extern const char* kCannotScriptGallery;
extern const char* kChromeVersionTooLow;
extern const char* kDevToolsExperimental;
+ extern const char* kDisabledByPolicy;
+ extern const char* kExperimentalFlagRequired;
extern const char* kHostedAppsCannotIncludeExtensionFeatures;
extern const char* kInvalidAllFrames;
extern const char* kInvalidBackground;
@@ -105,7 +114,6 @@ namespace extension_manifest_errors {
extern const char* kInvalidCssList;
extern const char* kInvalidDefaultLocale;
extern const char* kInvalidDescription;
- extern const char* kDisabledByPolicy;
extern const char* kInvalidDevToolsPage;
extern const char* kInvalidGlob;
extern const char* kInvalidGlobList;
@@ -160,6 +168,11 @@ namespace extension_manifest_errors {
extern const char* kInvalidThemeTints;
extern const char* kInvalidToolstrip;
extern const char* kInvalidToolstrips;
+ extern const char* kInvalidTts;
+ extern const char* kInvalidTtsVoices;
+ extern const char* kInvalidTtsVoicesGender;
+ extern const char* kInvalidTtsVoicesLocale;
+ extern const char* kInvalidTtsVoicesVoiceName;
extern const char* kInvalidUpdateURL;
extern const char* kInvalidVersion;
extern const char* kInvalidWebURL;
@@ -243,8 +256,7 @@ namespace extension_misc {
PROMO_LAUNCH_WEB_STORE,
PROMO_CLOSE,
PROMO_EXPIRE,
- PROMO_SEEN,
- PROMO_BUCKET_BOUNDARY
+ PROMO_BUCKET_BOUNDARY = PROMO_EXPIRE + 1
};
} // extension_misc
diff --git a/chrome/common/extensions/extension_file_util.cc b/chrome/common/extensions/extension_file_util.cc
index f2350cc..e8636be 100644
--- a/chrome/common/extensions/extension_file_util.cc
+++ b/chrome/common/extensions/extension_file_util.cc
@@ -77,7 +77,7 @@ void UninstallExtension(const FilePath& extensions_dir,
const std::string& id) {
// We don't care about the return value. If this fails (and it can, due to
// plugins that aren't unloaded yet, it will get cleaned up by
- // ExtensionsService::GarbageCollectExtensions).
+ // ExtensionService::GarbageCollectExtensions).
file_util::Delete(extensions_dir.AppendASCII(id), true); // recursive.
}
diff --git a/chrome/common/extensions/extension_file_util_unittest.cc b/chrome/common/extensions/extension_file_util_unittest.cc
index 230712d..3f59da6 100644
--- a/chrome/common/extensions/extension_file_util_unittest.cc
+++ b/chrome/common/extensions/extension_file_util_unittest.cc
@@ -239,5 +239,5 @@ TEST(ExtensionFileUtil, ExtensionURLToRelativeFilePath) {
}
// TODO(aa): More tests as motivation allows. Maybe steal some from
-// ExtensionsService? Many of them could probably be tested here without the
+// ExtensionService? Many of them could probably be tested here without the
// MessageLoop shenanigans.
diff --git a/chrome/common/extensions/extension_l10n_util.cc b/chrome/common/extensions/extension_l10n_util.cc
index 34762fd..994ab83 100644
--- a/chrome/common/extensions/extension_l10n_util.cc
+++ b/chrome/common/extensions/extension_l10n_util.cc
@@ -167,37 +167,14 @@ bool AddLocale(const std::set<std::string>& chrome_locales,
return true;
}
-std::string NormalizeLocale(const std::string& locale) {
- std::string normalized_locale(locale);
- std::replace(normalized_locale.begin(), normalized_locale.end(), '-', '_');
-
- return normalized_locale;
-}
-
std::string CurrentLocaleOrDefault() {
- std::string current_locale = NormalizeLocale(*GetProcessLocale());
+ std::string current_locale = l10n_util::NormalizeLocale(*GetProcessLocale());
if (current_locale.empty())
current_locale = "en";
return current_locale;
}
-void GetParentLocales(const std::string& current_locale,
- std::vector<std::string>* parent_locales) {
- std::string locale(NormalizeLocale(current_locale));
-
- const int kNameCapacity = 256;
- char parent[kNameCapacity];
- base::strlcpy(parent, locale.c_str(), kNameCapacity);
- parent_locales->push_back(parent);
- UErrorCode err = U_ZERO_ERROR;
- while (uloc_getParent(parent, parent, kNameCapacity, &err) > 0) {
- if (U_FAILURE(err))
- break;
- parent_locales->push_back(parent);
- }
-}
-
void GetAllLocales(std::set<std::string>* all_locales) {
const std::vector<std::string>& available_locales =
l10n_util::GetAvailableLocales();
@@ -205,7 +182,7 @@ void GetAllLocales(std::set<std::string>* all_locales) {
// I.e. for sr_Cyrl_RS we add sr_Cyrl_RS, sr_Cyrl and sr.
for (size_t i = 0; i < available_locales.size(); ++i) {
std::vector<std::string> result;
- GetParentLocales(available_locales[i], &result);
+ l10n_util::GetParentLocales(available_locales[i], &result);
all_locales->insert(result.begin(), result.end());
}
}
@@ -240,6 +217,7 @@ bool GetValidLocales(const FilePath& locale_path,
return true;
}
+
// Loads contents of the messages file for given locale. If file is not found,
// or there was parsing error we return NULL and set |error|.
// Caller owns the returned object.
@@ -270,7 +248,7 @@ ExtensionMessageBundle* LoadMessageCatalogs(
// Order locales to load as current_locale, first_parent, ..., default_locale.
std::vector<std::string> all_fallback_locales;
if (!application_locale.empty() && application_locale != default_locale)
- GetParentLocales(application_locale, &all_fallback_locales);
+ l10n_util::GetParentLocales(application_locale, &all_fallback_locales);
all_fallback_locales.push_back(default_locale);
std::vector<linked_ptr<DictionaryValue> > catalogs;
diff --git a/chrome/common/extensions/extension_l10n_util.h b/chrome/common/extensions/extension_l10n_util.h
index e1fdfa0..57aa68f 100644
--- a/chrome/common/extensions/extension_l10n_util.h
+++ b/chrome/common/extensions/extension_l10n_util.h
@@ -59,18 +59,9 @@ bool AddLocale(const std::set<std::string>& chrome_locales,
std::set<std::string>* valid_locales,
std::string* error);
-// Converts all - into _, to be consistent with ICU and file system names.
-std::string NormalizeLocale(const std::string& locale);
-
// Returns normalized current locale, or default locale - en_US.
std::string CurrentLocaleOrDefault();
-// Produce a vector of parent locales for given locale.
-// It includes the current locale in the result.
-// sr_Cyrl_RS generates sr_Cyrl_RS, sr_Cyrl and sr.
-void GetParentLocales(const std::string& current_locale,
- std::vector<std::string>* parent_locales);
-
// Extends list of Chrome locales to them and their parents, so we can do
// proper fallback.
void GetAllLocales(std::set<std::string>* all_locales);
diff --git a/chrome/common/extensions/extension_l10n_util_unittest.cc b/chrome/common/extensions/extension_l10n_util_unittest.cc
index 1487452..0ec7e97 100644
--- a/chrome/common/extensions/extension_l10n_util_unittest.cc
+++ b/chrome/common/extensions/extension_l10n_util_unittest.cc
@@ -214,17 +214,6 @@ TEST(ExtensionL10nUtil, LoadMessageCatalogsDuplicateKeys) {
EXPECT_TRUE(error.empty());
}
-TEST(ExtensionL10nUtil, GetParentLocales) {
- std::vector<std::string> locales;
- const std::string top_locale("sr_Cyrl_RS");
- extension_l10n_util::GetParentLocales(top_locale, &locales);
-
- ASSERT_EQ(3U, locales.size());
- EXPECT_EQ("sr_Cyrl_RS", locales[0]);
- EXPECT_EQ("sr_Cyrl", locales[1]);
- EXPECT_EQ("sr", locales[2]);
-}
-
// Caller owns the returned object.
ExtensionMessageBundle* CreateManifestBundle() {
linked_ptr<DictionaryValue> catalog(new DictionaryValue);
diff --git a/chrome/common/extensions/extension_manifests_unittest.cc b/chrome/common/extensions/extension_manifests_unittest.cc
index 2132b6c..f7c8f27 100644
--- a/chrome/common/extensions/extension_manifests_unittest.cc
+++ b/chrome/common/extensions/extension_manifests_unittest.cc
@@ -245,6 +245,15 @@ TEST_F(ExtensionManifestTest, ChromeURLContentScriptInvalid) {
errors::kInvalidMatch);
}
+TEST_F(ExtensionManifestTest, ExperimentalPermission) {
+ LoadAndExpectError("experimental.json", errors::kExperimentalFlagRequired);
+ CommandLine old_command_line = *CommandLine::ForCurrentProcess();
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+ LoadAndExpectSuccess("experimental.json");
+ *CommandLine::ForCurrentProcess() = old_command_line;
+}
+
TEST_F(ExtensionManifestTest, DevToolsExtensions) {
LoadAndExpectError("devtools_extension_no_permissions.json",
errors::kDevToolsExperimental);
@@ -365,3 +374,37 @@ TEST_F(ExtensionManifestTest, DefaultPathForExtent) {
EXPECT_TRUE(extension->web_extent().ContainsURL(
GURL("http://www.google.com/monkey")));
}
+
+TEST_F(ExtensionManifestTest, DefaultLocale) {
+ LoadAndExpectError("default_locale_invalid.json",
+ extension_manifest_errors::kInvalidDefaultLocale);
+
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("default_locale_valid.json"));
+ EXPECT_EQ("de-AT", extension->default_locale());
+}
+
+TEST_F(ExtensionManifestTest, TtsProvider) {
+ LoadAndExpectError("tts_provider_invalid_1.json",
+ extension_manifest_errors::kInvalidTts);
+ LoadAndExpectError("tts_provider_invalid_2.json",
+ extension_manifest_errors::kInvalidTtsVoices);
+ LoadAndExpectError("tts_provider_invalid_3.json",
+ extension_manifest_errors::kInvalidTtsVoices);
+ LoadAndExpectError("tts_provider_invalid_4.json",
+ extension_manifest_errors::kInvalidTtsVoicesVoiceName);
+ LoadAndExpectError("tts_provider_invalid_5.json",
+ extension_manifest_errors::kInvalidTtsVoicesLocale);
+ LoadAndExpectError("tts_provider_invalid_6.json",
+ extension_manifest_errors::kInvalidTtsVoicesLocale);
+ LoadAndExpectError("tts_provider_invalid_7.json",
+ extension_manifest_errors::kInvalidTtsVoicesGender);
+
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("tts_provider_valid.json"));
+
+ ASSERT_EQ(1u, extension->tts_voices().size());
+ EXPECT_EQ("name", extension->tts_voices()[0].voice_name);
+ EXPECT_EQ("en-US", extension->tts_voices()[0].locale);
+ EXPECT_EQ("female", extension->tts_voices()[0].gender);
+}
diff --git a/chrome/common/extensions/extension_message_bundle.cc b/chrome/common/extensions/extension_message_bundle.cc
index 3f7c152..ea28c83 100644
--- a/chrome/common/extensions/extension_message_bundle.cc
+++ b/chrome/common/extensions/extension_message_bundle.cc
@@ -10,9 +10,9 @@
#include "app/l10n_util.h"
#include "base/hash_tables.h"
#include "base/i18n/rtl.h"
+#include "base/lazy_instance.h"
#include "base/linked_ptr.h"
#include "base/scoped_ptr.h"
-#include "base/singleton.h"
#include "base/stl_util-inl.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
@@ -316,18 +316,30 @@ std::string ExtensionMessageBundle::GetL10nMessage(
//
///////////////////////////////////////////////////////////////////////////////
+// Unique class for Singleton.
+struct ExtensionToMessagesMap {
+ ExtensionToMessagesMap();
+ ~ExtensionToMessagesMap();
+
+ // Maps extension ID to message map.
+ ExtensionToL10nMessagesMap messages_map;
+};
+
+static base::LazyInstance<ExtensionToMessagesMap> g_extension_to_messages_map(
+ base::LINKER_INITIALIZED);
+
ExtensionToMessagesMap::ExtensionToMessagesMap() {}
ExtensionToMessagesMap::~ExtensionToMessagesMap() {}
ExtensionToL10nMessagesMap* GetExtensionToL10nMessagesMap() {
- return &Singleton<ExtensionToMessagesMap>()->messages_map;
+ return &g_extension_to_messages_map.Get().messages_map;
}
L10nMessagesMap* GetL10nMessagesMap(const std::string extension_id) {
ExtensionToL10nMessagesMap::iterator it =
- Singleton<ExtensionToMessagesMap>()->messages_map.find(extension_id);
- if (it != Singleton<ExtensionToMessagesMap>()->messages_map.end())
+ g_extension_to_messages_map.Get().messages_map.find(extension_id);
+ if (it != g_extension_to_messages_map.Get().messages_map.end())
return &(it->second);
return NULL;
diff --git a/chrome/common/extensions/extension_message_bundle.h b/chrome/common/extensions/extension_message_bundle.h
index 6370559..df3bf35 100644
--- a/chrome/common/extensions/extension_message_bundle.h
+++ b/chrome/common/extensions/extension_message_bundle.h
@@ -155,15 +155,6 @@ typedef std::map<std::string, std::string> L10nMessagesMap;
// A map of extension ID to l10n message map.
typedef std::map<std::string, L10nMessagesMap > ExtensionToL10nMessagesMap;
-// Unique class for Singleton.
-struct ExtensionToMessagesMap {
- ExtensionToMessagesMap();
- ~ExtensionToMessagesMap();
-
- // Maps extension ID to message map.
- ExtensionToL10nMessagesMap messages_map;
-};
-
// Returns the extension_id to messages map.
ExtensionToL10nMessagesMap* GetExtensionToL10nMessagesMap();
diff --git a/chrome/common/extensions/extension_resource_unittest.cc b/chrome/common/extensions/extension_resource_unittest.cc
index 1590225..e7b3ef0 100644
--- a/chrome/common/extensions/extension_resource_unittest.cc
+++ b/chrome/common/extensions/extension_resource_unittest.cc
@@ -58,8 +58,7 @@ TEST(ExtensionResourceTest, CreateWithAllResourcesOnDisk) {
ASSERT_TRUE(file_util::CreateDirectory(l10n_path));
std::vector<std::string> locales;
- extension_l10n_util::GetParentLocales(l10n_util::GetApplicationLocale(""),
- &locales);
+ l10n_util::GetParentLocales(l10n_util::GetApplicationLocale(""), &locales);
ASSERT_FALSE(locales.empty());
for (size_t i = 0; i < locales.size(); i++) {
FilePath make_path;
diff --git a/chrome/common/extensions/extension_unpacker.cc b/chrome/common/extensions/extension_unpacker.cc
index e270870..1ff4342 100644
--- a/chrome/common/extensions/extension_unpacker.cc
+++ b/chrome/common/extensions/extension_unpacker.cc
@@ -4,6 +4,8 @@
#include "chrome/common/extensions/extension_unpacker.h"
+#include <set>
+
#include "base/file_util.h"
#include "base/scoped_handle.h"
#include "base/scoped_temp_dir.h"
@@ -18,7 +20,6 @@
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/json_value_serializer.h"
-#include "chrome/common/notification_service.h"
#include "chrome/common/url_constants.h"
#include "chrome/common/zip.h"
#include "ipc/ipc_message_utils.h"
@@ -150,7 +151,6 @@ bool ExtensionUnpacker::Run() {
extension_path_.DirName().AppendASCII(filenames::kTempExtensionName);
if (!file_util::CreateDirectory(temp_install_dir_)) {
-
#if defined(OS_WIN)
std::string dir_string = WideToUTF8(temp_install_dir_.value());
#else
diff --git a/chrome/common/extensions/update_manifest.cc b/chrome/common/extensions/update_manifest.cc
index 3329456..c75aa01 100644
--- a/chrome/common/extensions/update_manifest.cc
+++ b/chrome/common/extensions/update_manifest.cc
@@ -10,6 +10,7 @@
#include "base/stl_util-inl.h"
#include "base/string_util.h"
#include "base/string_number_conversions.h"
+#include "base/stringprintf.h"
#include "base/version.h"
#include "chrome/common/libxml_utils.h"
#include "libxml/tree.h"
@@ -35,7 +36,7 @@ void UpdateManifest::ParseError(const char* details, ...) {
// TODO(asargent) make a platform abstracted newline?
errors_ += "\r\n";
}
- StringAppendV(&errors_, details, args);
+ base::StringAppendV(&errors_, details, args);
va_end(args);
}
@@ -81,7 +82,7 @@ static void XmlErrorFunc(void *context, const char *message, ...) {
va_list args;
va_start(args, message);
std::string* error = static_cast<std::string*>(context);
- StringAppendV(error, message, args);
+ base::StringAppendV(error, message, args);
va_end(args);
}
diff --git a/chrome/common/extensions/url_pattern.h b/chrome/common/extensions/url_pattern.h
index 72810ba..c0f17af 100644
--- a/chrome/common/extensions/url_pattern.h
+++ b/chrome/common/extensions/url_pattern.h
@@ -203,19 +203,10 @@ class URLPattern {
private:
friend class std::vector<URLPattern>;
-// See clang bug: http://llvm.org/bugs/show_bug.cgi?id=8479
-#if defined(__clang__)
- public:
-#endif
-
// Note: don't use this directly. This exists so URLPattern can be used
// with STL containers.
URLPattern();
-#if defined(__clang__)
- private:
-#endif
-
// A bitmask containing the schemes which are considered valid for this
// pattern. Parse() uses this to decide whether a pattern contains a valid
// scheme. MatchesScheme uses this to decide whether a wildcard scheme_