summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
authorkurrik@chromium.org <kurrik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-05 19:49:36 +0000
committerkurrik@chromium.org <kurrik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-05 19:49:36 +0000
commit389509acdf508b1b4014406f55261ee8cbac4b3e (patch)
treeab4e79348aed11d81788ea3356dc22a507c38cee /chrome/common
parentd50c2c4917a34d27e2bda8eeb47a185a9bcf3ed3 (diff)
downloadchromium_src-389509acdf508b1b4014406f55261ee8cbac4b3e.zip
chromium_src-389509acdf508b1b4014406f55261ee8cbac4b3e.tar.gz
chromium_src-389509acdf508b1b4014406f55261ee8cbac4b3e.tar.bz2
Change the existing extension samples page to an automatically-generated searchable directory.
* Fixes a typo in the maps_app sample that prevents the manifest from being parsed as valid JSON. * Adds code to build a samples.json file in the documentation root, for use by the jstemplate docs rendering process. * Adds build/sample.py, a class which parses an individual sample's metadata out of the filesystem * Adds css/samples.css for directory-specific styles (could be merged into base styles if this is an issue) * Adds images/sample-default-icon.png for samples which don't have 128px icons. * Adds js/sample_search.js as the source for the sample search code (was difficult to escape this through the JSTemplate code without being in a different file). BUG=None TEST=None Review URL: http://codereview.chromium.org/2957009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55111 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rwxr-xr-xchrome/common/extensions/docs/build/build.py39
-rw-r--r--chrome/common/extensions/docs/build/directory.py552
-rw-r--r--chrome/common/extensions/docs/css/samples.css99
-rw-r--r--chrome/common/extensions/docs/examples/extensions/maps_app/manifest.json2
-rw-r--r--chrome/common/extensions/docs/images/sample-default-icon.pngbin0 -> 5321 bytes
-rw-r--r--chrome/common/extensions/docs/js/api_page_generator.js82
-rw-r--r--chrome/common/extensions/docs/js/sample_search.js82
-rw-r--r--chrome/common/extensions/docs/samples.html2084
-rw-r--r--chrome/common/extensions/docs/samples.json1237
-rw-r--r--chrome/common/extensions/docs/static/samples.html258
10 files changed, 4085 insertions, 350 deletions
diff --git a/chrome/common/extensions/docs/build/build.py b/chrome/common/extensions/docs/build/build.py
index 509b9c2..f0d1b96 100755
--- a/chrome/common/extensions/docs/build/build.py
+++ b/chrome/common/extensions/docs/build/build.py
@@ -21,12 +21,14 @@ _base_dir = os.path.normpath(_build_dir + "/..")
_static_dir = _base_dir + "/static"
_js_dir = _base_dir + "/js"
_template_dir = _base_dir + "/template"
+_samples_dir = _base_dir + "/examples"
_extension_api_dir = os.path.normpath(_base_dir + "/../api")
_extension_api_json = _extension_api_dir + "/extension_api.json"
_api_template_html = _template_dir + "/api_template.html"
_page_shell_html = _template_dir + "/page_shell.html"
_generator_html = _build_dir + "/generator.html"
+_samples_json = _base_dir + "/samples.json"
_expected_output_preamble = "<!DOCTYPE html>"
_expected_output_postamble = "</body></html>"
@@ -36,6 +38,9 @@ _expected_output_postamble = "</body></html>"
sys.path.append(os.path.normpath(_base_dir +
"/../../../../third_party"))
import simplejson as json
+from directory import Sample
+from directory import ApiManifest
+from directory import SamplesManifest
def RenderPage(name, test_shell):
"""
@@ -132,22 +137,6 @@ def FindTestShell():
"Searched: \n" + "\n".join(search_locations) + "\n" +
"To specify a path to test_shell use --test-shell-path")
-def GetAPIModuleNames():
- try:
- contents = open(_extension_api_json, 'r').read()
- except IOError, msg:
- raise Exception("Failed to read the file that defines the extensions API. "
- "The specific error was: %s." % msg)
-
- try:
- extension_api = json.loads(contents, encoding="ASCII")
- except ValueError, msg:
- raise Exception("File %s has a syntax error: %s" %
- (_extension_api_json, msg))
- # Exclude modules with a "nodoc" property.
- return set(module['namespace'].encode() for module in extension_api
- if "nodoc" not in module)
-
def GetStaticFileNames():
static_files = os.listdir(_static_dir)
return set(os.path.splitext(file_name)[0]
@@ -162,6 +151,7 @@ def main():
parser = OptionParser()
parser.add_option("--test-shell-path", dest="test_shell_path")
+ parser.add_option("--page-name", dest="page_name")
(options, args) = parser.parse_args()
if (options.test_shell_path and os.path.isfile(options.test_shell_path)):
@@ -169,15 +159,30 @@ def main():
else:
test_shell = FindTestShell()
+ # Load the manifest of existing API Methods
+ api_manifest = ApiManifest(_extension_api_json)
+
# Read static file names
static_names = GetStaticFileNames()
# Read module names
- module_names = GetAPIModuleNames()
+ module_names = api_manifest.getModuleNames()
# All pages to generate
page_names = static_names | module_names
+ # Allow the user to render a single page if they want
+ if options.page_name:
+ if options.page_name in page_names:
+ page_names = [options.page_name]
+ else:
+ raise Exception("--page-name argument must be one of %s." %
+ ', '.join(sorted(page_names)))
+
+ # Render a manifest file containing metadata about all the extension samples
+ samples_manifest = SamplesManifest(_samples_dir, _base_dir, api_manifest)
+ samples_manifest.writeToFile(_samples_json)
+
modified_files = []
for page in page_names:
modified_file = RenderPage(page, test_shell)
diff --git a/chrome/common/extensions/docs/build/directory.py b/chrome/common/extensions/docs/build/directory.py
new file mode 100644
index 0000000..b736263
--- /dev/null
+++ b/chrome/common/extensions/docs/build/directory.py
@@ -0,0 +1,552 @@
+#!/usr/bin/python
+# 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.
+
+"""Class for parsing metadata about extension samples."""
+
+import os
+import os.path
+import re
+import hashlib
+import simplejson as json
+
+def parse_json_file(path, encoding="utf-8"):
+ """ Load the specified file and parse it as JSON.
+
+ Args:
+ path: Path to a file containing JSON-encoded data.
+ encoding: Encoding used in the file. Defaults to utf-8.
+
+ Returns:
+ A Python object representing the data encoded in the file.
+
+ Raises:
+ Exception: If the file could not be read or its contents could not be
+ parsed as JSON data.
+ """
+ try:
+ json_file = open(path, 'r')
+ except IOError, msg:
+ raise Exception("Failed to read the file at %s: %s" % (path, msg))
+
+ try:
+ json_obj = json.load(json_file, encoding)
+ except ValueError, msg:
+ raise Exception("Failed to parse JSON out of file %s: %s" % (path, msg))
+
+ json_file.close()
+ return json_obj
+
+class ApiManifest(object):
+ """ Represents the list of API methods contained in extension_api.json """
+
+ _MODULE_DOC_KEYS = ['functions', 'events']
+ """ Keys which may be passed to the _parseModuleDocLinksByKey method."""
+
+ def __init__(self, manifest_path):
+ """ Read the supplied manifest file and parse its contents.
+
+ Args:
+ manifest_path: Path to extension_api.json
+ """
+ self._manifest = parse_json_file(manifest_path)
+
+ def _getDocLink(self, method, hashprefix):
+ """
+ Given an API method, return a partial URL corresponding to the doc
+ file for that method.
+
+ Args:
+ method: A string like 'chrome.foo.bar' or 'chrome.experimental.foo.onBar'
+ hashprefix: The prefix to put in front of hash links - 'method' for
+ methods and 'event' for events.
+
+ Returns:
+ A string like 'foo.html#method-bar' or 'experimental.foo.html#event-onBar'
+ """
+ urlpattern = '%%s.html#%s-%%s' % hashprefix
+ urlparts = tuple(method.replace('chrome.', '').rsplit('.', 1))
+ return urlpattern % urlparts
+
+ def _parseModuleDocLinksByKey(self, module, key):
+ """
+ Given a specific API module, returns a dict of methods or events mapped to
+ documentation URLs.
+
+ Args:
+ module: The data in extension_api.json corresponding to a single module.
+ key: A key belonging to _MODULE_DOC_KEYS to determine which set of
+ methods to parse, and what kind of documentation URL to generate.
+
+ Returns:
+ A dict of extension methods mapped to file and hash URL parts for the
+ corresponding documentation links, like:
+ {
+ "chrome.tabs.remove": "tabs.html#method-remove",
+ "chrome.tabs.onDetached" : "tabs.html#event-onDetatched"
+ }
+
+ If the API namespace is defined "nodoc" then an empty dict is returned.
+
+ Raises:
+ Exception: If the key supplied is not a member of _MODULE_DOC_KEYS.
+ """
+ methods = []
+ api_dict = {}
+ namespace = module['namespace']
+ if module.has_key('nodoc'):
+ return api_dict
+ if key not in self._MODULE_DOC_KEYS:
+ raise Exception("key %s must be one of %s" % (key, self._MODULE_DOC_KEYS))
+ if module.has_key(key):
+ methods.extend(module[key])
+ for method in methods:
+ method_name = 'chrome.%s.%s' % (namespace, method['name'])
+ hashprefix = 'method'
+ if key == 'events':
+ hashprefix = 'event'
+ api_dict[method_name] = self._getDocLink(method_name, hashprefix)
+ return api_dict
+
+ def getModuleNames(self):
+ """ Returns the names of individual modules in the API.
+
+ Returns:
+ The namespace """
+ # Exclude modules with a "nodoc" property.
+ return set(module['namespace'].encode() for module in self._manifest
+ if "nodoc" not in module)
+
+ def getDocumentationLinks(self):
+ """ Parses the extension_api.json manifest and returns a dict of all
+ events and methods for every module, mapped to relative documentation links.
+
+ Returns:
+ A dict of methods/events => partial doc links for every module.
+ """
+ api_dict = {}
+ for module in self._manifest:
+ api_dict.update(self._parseModuleDocLinksByKey(module, 'functions'))
+ api_dict.update(self._parseModuleDocLinksByKey(module, 'events'))
+ return api_dict
+
+class SamplesManifest(object):
+ """ Represents a manifest file containing information about the sample
+ extensions available in the codebase. """
+
+ def __init__(self, base_sample_path, base_dir, api_manifest):
+ """ Reads through the filesystem and obtains information about any Chrome
+ extensions which exist underneath the specified folder.
+
+ Args:
+ base_sample_path: The directory under which to search for samples.
+ base_dir: The base directory samples will be referenced from.
+ api_manifest: An instance of the ApiManifest class, which will indicate
+ which API methods are available.
+ """
+ self._base_dir = base_dir
+ manifest_paths = self._locateManifestsFromPath(base_sample_path)
+ self._manifest_data = self._parseManifestData(manifest_paths, api_manifest)
+
+ def _locateManifestsFromPath(self, path):
+ """
+ Returns a list of paths to sample extension manifest.json files.
+
+ Args:
+ base_path: Base path in which to start the search.
+ Returns:
+ A list of paths below base_path pointing at manifest.json files.
+ """
+ manifest_paths = []
+ for root, directories, files in os.walk(path):
+ if 'manifest.json' in files:
+ directories = [] # Don't go any further down this tree
+ manifest_paths.append(os.path.join(root, 'manifest.json'))
+ if '.svn' in directories:
+ directories.remove('.svn') # Don't go into SVN metadata directories
+ return manifest_paths
+
+ def _parseManifestData(self, manifest_paths, api_manifest):
+ """ Returns metadata about the sample extensions given their manifest
+ paths.
+
+ Args:
+ manifest_paths: A list of paths to extension manifests
+ api_manifest: An instance of the ApiManifest class, which will indicate
+ which API methods are available.
+
+ Returns:
+ Manifest data containing a list of samples and available API methods.
+ """
+ api_method_dict = api_manifest.getDocumentationLinks()
+ api_methods = api_method_dict.keys()
+
+ samples = []
+ for path in manifest_paths:
+ sample = Sample(path, api_methods, self._base_dir)
+ # Don't render apps
+ if sample.is_app() == False:
+ samples.append(sample)
+ samples.sort(lambda x,y: cmp(x['name'].upper(), y['name'].upper()))
+
+ manifest_data = {'samples': samples, 'api': api_method_dict}
+ return manifest_data
+
+ def writeToFile(self, path):
+ """ Writes the contents of this manifest file as a JSON-encoded text file.
+
+ Args:
+ path: The path to write the samples manifest file to.
+ """
+ manifest_text = json.dumps(self._manifest_data, indent=2)
+ output_path = os.path.realpath(path)
+ try:
+ output_file = open(output_path, 'w')
+ except IOError, msg:
+ raise Exception("Failed to write the samples manifest file."
+ "The specific error was: %s." % msg)
+ output_file.write(manifest_text)
+ output_file.close()
+
+class Sample(dict):
+ """ Represents metadata about a Chrome extension sample.
+
+ Extends dict so that it can be easily JSON serialized.
+ """
+
+ def __init__(self, manifest_path, api_methods, base_dir):
+ """ Initializes a Sample instance given a path to a manifest.
+
+ Args:
+ manifest_path: A filesystem path to a manifest file.
+ api_methods: A list of strings containing all possible Chrome extension
+ API calls.
+ base_dir: The base directory where this sample will be referenced from -
+ paths will be made relative to this directory.
+ """
+ self._base_dir = base_dir
+ self._manifest_path = manifest_path
+ self._manifest = parse_json_file(self._manifest_path)
+ self._locale_data = self._parse_locale_data()
+
+ # The following properties will be serialized when converting this object
+ # to JSON.
+
+ self['id'] = hashlib.sha1(manifest_path).hexdigest()
+ self['api_calls'] = self._parse_api_calls(api_methods)
+ self['name'] = self._parse_name()
+ self['description'] = self._parse_description()
+ self['icon'] = self._parse_icon()
+ self['features'] = self._parse_features()
+ self['protocols'] = self._parse_protocols()
+ self['path'] = self._get_relative_path()
+ self['search_string'] = self._get_search_string()
+ self['source_files'] = self._parse_source_files()
+
+ _FEATURE_ATTRIBUTES = (
+ 'browser_action',
+ 'page_action',
+ 'background_page',
+ 'options_page',
+ 'plugins',
+ 'theme',
+ 'chrome_url_overrides'
+ )
+ """ Attributes that will map to "features" if their corresponding key is
+ present in the extension manifest. """
+
+ _SOURCE_FILE_EXTENSIONS = ('.html', '.json', '.js', '.css', '.htm')
+ """ File extensions to files which may contain source code."""
+
+ _ENGLISH_LOCALES = ['en_US', 'en', 'en_GB']
+ """ Locales from which translations may be used in the sample gallery. """
+
+ def _get_localized_manifest_value(self, key):
+ """ Returns a localized version of the requested manifest value.
+
+ Args:
+ key: The manifest key whose value the caller wants translated.
+
+ Returns:
+ If the supplied value exists and contains a ___MSG_token___ value, this
+ method will resolve the appropriate translation and return the result.
+ If no token exists, the manifest value will be returned. If the key does
+ not exist, an empty string will be returned.
+
+ Raises:
+ Exception: If the localized value for the given token could not be found.
+ """
+ if self._manifest.has_key(key):
+ if self._manifest[key][:6] == '__MSG_':
+ try:
+ return self._get_localized_value(self._manifest[key])
+ except Exception, msg:
+ raise Exception("Could not translate manifest value for key %s: %s" %
+ (key, msg))
+ else:
+ return self._manifest[key]
+ else:
+ return ''
+
+ def _get_localized_value(self, message_token):
+ """ Returns the localized version of the requested MSG bundle token.
+
+ Args:
+ message_token: A message bundle token like __MSG_extensionName__.
+
+ Returns:
+ The translated text corresponding to the token, with any placeholders
+ automatically resolved and substituted in.
+
+ Raises:
+ Exception: If a message bundle token is not found in the translations.
+ """
+ placeholder_pattern = re.compile('\$(\w*)\$')
+ token = message_token[6:-2]
+ if self._locale_data.has_key(token):
+ message = self._locale_data[token]['message']
+
+ placeholder_match = placeholder_pattern.search(message)
+ if placeholder_match:
+ # There are placeholders in the translation - substitute them.
+ placeholder_name = placeholder_match.group(1)
+ placeholders = self._locale_data[token]['placeholders']
+ if placeholders.has_key(placeholder_name.lower()):
+ placeholder_value = placeholders[placeholder_name.lower()]['content']
+ placeholder_token = '$%s$' % placeholder_name
+ message = message.replace(placeholder_token, placeholder_value)
+ return message
+ else:
+ raise Exception('Could not find localized string: %s' % message_token)
+
+ def _get_relative_path(self):
+ """ Returns a relative path from the supplied base dir to the manifest dir.
+
+ This method is used because we may not be able to rely on os.path.relpath
+ which was introduced in Python 2.6 and only works on Windows and Unix.
+
+ Since the example extensions should always be subdirectories of the
+ base sample manifest path, we can get a relative path through a simple
+ string substitution.
+
+ Returns:
+ A relative directory path from the sample manifest's directory to the
+ directory containing this sample's manifest.json.
+ """
+ real_manifest_path = os.path.realpath(self._manifest_path)
+ real_base_path = os.path.realpath(self._base_dir)
+ return real_manifest_path.replace(real_base_path, '')\
+ .replace('manifest.json', '')[1:]
+
+ def _get_search_string(self):
+ """ Constructs a string to be used when searching the samples list.
+
+ To make the implementation of the JavaScript-based search very direct, a
+ string is constructed containing the title, description, API calls, and
+ features that this sample uses, and is converted to uppercase. This makes
+ JavaScript sample searching very fast and easy to implement.
+
+ Returns:
+ An uppercase string containing information to match on for searching
+ samples on the client.
+ """
+ search_terms = [
+ self['name'],
+ self['description'],
+ ]
+ search_terms.extend(self['features'])
+ search_terms.extend(self['api_calls'])
+ search_string = ' '.join(search_terms).replace('"', '')\
+ .replace('\'', '')\
+ .upper()
+ return search_string
+
+ def _parse_api_calls(self, api_methods):
+ """ Returns a list of Chrome extension API calls the sample makes.
+
+ Parses any *.html and *.js files in the sample directory and matches them
+ against the supplied list of all available API methods, returning methods
+ which show up in the sample code.
+
+ Args:
+ api_methods: A list of strings containing the potential
+ API calls the and the extension sample could be making.
+
+ Returns:
+ A set of every member of api_methods that appears in any *.html or *.js
+ file contained in this sample's directory (or subdirectories).
+
+ Raises:
+ Exception: If any of the *.html or *.js files cannot be read.
+ """
+ api_calls = set()
+ extension_dir_path = os.path.dirname(self._manifest_path)
+ for root, dirs, files in os.walk(extension_dir_path):
+ for file in files:
+ if file[-5:] == '.html' or file[-3:] == '.js':
+ path = os.path.join(root, file)
+ try:
+ code_file = open(path)
+ except IOError, msg:
+ raise Exception("Failed to read %s: %s" % (path, msg))
+ code_contents = code_file.read()
+ code_file.close()
+
+ for method in api_methods:
+ if (code_contents.find(method) > -1):
+ api_calls.add(method)
+ return sorted(api_calls)
+
+ def _parse_source_files(self):
+ """ Returns a list of paths to source files present in the extenion.
+
+ Returns:
+ A list of paths relative to the manifest file directory.
+ """
+ source_paths = []
+ base_path = os.path.realpath(os.path.dirname(self._manifest_path))
+ for root, directories, files in os.walk(base_path):
+ if '.svn' in directories:
+ directories.remove('.svn') # Don't go into SVN metadata directories
+
+ for file_name in files:
+ ext = os.path.splitext(file_name)[1]
+ if ext in self._SOURCE_FILE_EXTENSIONS:
+ path = os.path.realpath(os.path.join(root, file_name))
+ path = path.replace(base_path, '')[1:]
+ source_paths.append(path)
+ return source_paths
+
+ def _parse_description(self):
+ """ Returns a localized description of the extension.
+
+ Returns:
+ A localized version of the sample's description.
+ """
+ return self._get_localized_manifest_value('description')
+
+ def _parse_features(self):
+ """ Returns a list of features the sample uses.
+
+ Returns:
+ A list of features the extension uses, as determined by
+ self._FEATURE_ATTRIBUTES.
+ """
+ features = set()
+ for feature_attr in self._FEATURE_ATTRIBUTES:
+ if self._manifest.has_key(feature_attr):
+ features.add(feature_attr)
+
+ if self._uses_popup():
+ features.add('popup')
+
+ if self._manifest.has_key('permissions'):
+ for permission in self._manifest['permissions']:
+ split = permission.split('://')
+ if (len(split) == 1):
+ features.add(split[0])
+ return sorted(features)
+
+ def _parse_icon(self):
+ """ Returns the path to the 128px icon for this sample.
+
+ Returns:
+ The path to the 128px icon if defined in the manifest, None otherwise.
+ """
+ if (self._manifest.has_key('icons') and
+ self._manifest['icons'].has_key('128')):
+ return self._manifest['icons']['128']
+ else:
+ return None
+
+ def _parse_locale_data(self):
+ """ Parses this sample's locale data into a dict.
+
+ Because the sample gallery is in English, this method only looks for
+ translations as defined by self._ENGLISH_LOCALES.
+
+ Returns:
+ A dict containing the translation keys and corresponding English text
+ for this extension.
+
+ Raises:
+ Exception: If the messages file cannot be read, or if it is improperly
+ formatted JSON.
+ """
+ en_messages = {}
+ extension_dir_path = os.path.dirname(self._manifest_path)
+ for locale in self._ENGLISH_LOCALES:
+ en_messages_path = os.path.join(extension_dir_path, '_locales', locale,
+ 'messages.json')
+ if (os.path.isfile(en_messages_path)):
+ break
+
+ if (os.path.isfile(en_messages_path)):
+ try:
+ en_messages_file = open(en_messages_path, 'r')
+ except IOError, msg:
+ raise Exception("Failed to read %s: %s" % (en_messages_path, msg))
+ en_messages_contents = en_messages_file.read()
+ en_messages_file.close()
+ try:
+ en_messages = json.loads(en_messages_contents)
+ except ValueError, msg:
+ raise Exception("File %s has a syntax error: %s" %
+ (en_messages_path, msg))
+ return en_messages
+
+ def _parse_name(self):
+ """ Returns a localized name for the extension.
+
+ Returns:
+ A localized version of the sample's name.
+ """
+ return self._get_localized_manifest_value('name')
+
+ def _parse_protocols(self):
+ """ Returns a list of protocols this extension requests permission for.
+
+ Returns:
+ A list of every unique protocol listed in the manifest's permssions.
+ """
+ protocols = []
+ if self._manifest.has_key('permissions'):
+ for permission in self._manifest['permissions']:
+ split = permission.split('://')
+ if (len(split) == 2) and (split[0] not in protocols):
+ protocols.append(split[0] + "://")
+ return protocols
+
+ def _uses_background(self):
+ """ Returns true if the extension defines a background page. """
+ return self._manifest.has_key('background_page')
+
+ def _uses_browser_action(self):
+ """ Returns true if the extension defines a browser action. """
+ return self._manifest.has_key('browser_action')
+
+ def _uses_content_scripts(self):
+ """ Returns true if the extension uses content scripts. """
+ return self._manifest.has_key('content_scripts')
+
+ def _uses_options(self):
+ """ Returns true if the extension defines an options page. """
+ return self._manifest.has_key('options_page')
+
+ def _uses_page_action(self):
+ """ Returns true if the extension uses a page action. """
+ return self._manifest.has_key('page_action')
+
+ def _uses_popup(self):
+ """ Returns true if the extension defines a popup on a page or browser
+ action. """
+ has_b_popup = (self._uses_browser_action() and
+ self._manifest['browser_action'].has_key('popup'))
+ has_p_popup = (self._uses_page_action() and
+ self._manifest['page_action'].has_key('popup'))
+ return has_b_popup or has_p_popup
+
+ def is_app(self):
+ """ Returns true if the extension has an 'app' section in its manifest."""
+ return self._manifest.has_key('app')
diff --git a/chrome/common/extensions/docs/css/samples.css b/chrome/common/extensions/docs/css/samples.css
new file mode 100644
index 0000000..c4ab486
--- /dev/null
+++ b/chrome/common/extensions/docs/css/samples.css
@@ -0,0 +1,99 @@
+a img {
+ border:0;
+}
+h2.name {
+ margin: 0 !important;
+ padding: 0 !important;
+ background: #fff !important;
+ border: 0 !important;
+ font-size: 17px;
+}
+h2.name a {
+ text-decoration: none;
+ color: #000 !important;
+}
+h2.name a:hover {
+ text-decoration: underline;
+}
+code a {
+ color: #007000 !important;
+ text-decoration: none;
+}
+code a:hover {
+ text-decoration: underline;
+}
+.apicalls {
+ margin: 10px 0 0 0;
+}
+.apicalls li {
+ margin: 0 0 0 20px;
+ padding: 0;
+}
+.apicalls ul {
+ margin: 5px 0 0 10px;
+ padding: 0;
+}
+.sourcefiles code a {
+ color: #0000cc !important;
+}
+.apicalls, .sourcefiles {
+ margin: 5px 0;
+ padding: 0;
+}
+p {
+ margin: 10px 0;
+}
+.features {
+ font-size: 11px;
+ margin: 0 0 10px 0;
+ padding: 0;
+}
+.sample {
+ padding: 20px 0 15px 74px;
+ margin: 0;
+ border-bottom: 1px solid #ddd;
+ min-height: 74px;
+ position: relative;
+}
+.selected {
+ color: #000 !important;
+ text-decoration: none !important;
+ cursor: text !important;
+ font-weight: bold !important;
+}
+img.icon {
+ position: absolute;
+ width: 64px;
+ height: 64px;
+ left: 0;
+ top: 10px;
+}
+#controls {
+ margin: 10px 0;
+ background: #eee;
+ padding: 10px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+}
+.controlbox {
+ padding-left: 12em;
+ position: relative;
+}
+.controlbox strong {
+ position: absolute;
+ left: -10px;
+ top: 2px;
+ text-align: right;
+ width: 12em;
+}
+.controlbox input {
+ width: 30em;
+ margin-bottom: 4px;
+}
+#noresults {
+ text-align: center;
+ padding: 50px 0;
+ font-size: 17px;
+ font-weight: bold;
+} \ No newline at end of file
diff --git a/chrome/common/extensions/docs/examples/extensions/maps_app/manifest.json b/chrome/common/extensions/docs/examples/extensions/maps_app/manifest.json
index d402a74..1d600ee 100644
--- a/chrome/common/extensions/docs/examples/extensions/maps_app/manifest.json
+++ b/chrome/common/extensions/docs/examples/extensions/maps_app/manifest.json
@@ -10,5 +10,5 @@
"web_url": "http://maps.google.com/"
}
},
- "permissions": ["geolocation"],
+ "permissions": ["geolocation"]
}
diff --git a/chrome/common/extensions/docs/images/sample-default-icon.png b/chrome/common/extensions/docs/images/sample-default-icon.png
new file mode 100644
index 0000000..8359c14
--- /dev/null
+++ b/chrome/common/extensions/docs/images/sample-default-icon.png
Binary files differ
diff --git a/chrome/common/extensions/docs/js/api_page_generator.js b/chrome/common/extensions/docs/js/api_page_generator.js
index 5aa11fe..96fe7be 100644
--- a/chrome/common/extensions/docs/js/api_page_generator.js
+++ b/chrome/common/extensions/docs/js/api_page_generator.js
@@ -16,6 +16,7 @@
var API_TEMPLATE = "template/api_template.html";
var SCHEMA = "../api/extension_api.json";
+var SAMPLES = "samples.json";
var REQUEST_TIMEOUT = 2000;
function staticResource(name) { return "static/" + name + ".html"; }
@@ -29,6 +30,12 @@ var pageData = {};
// The full extension api schema
var schema;
+// List of Chrome extension samples.
+var samples;
+
+// Mappings of api calls to URLs
+var apiMapping;
+
// The current module for this page (if this page is an api module);
var module;
@@ -41,11 +48,6 @@ var pageName;
// If this page is an apiModule, the name of the api module
var apiModuleName;
-Array.prototype.each = function(f) {
- for (var i = 0; i < this.length; i++) {
- f(this[i], i);
- }
-}
// Visits each item in the list in-order. Stops when f returns any truthy
// value and returns that node.
@@ -56,14 +58,6 @@ Array.prototype.select = function(f) {
}
}
-Array.prototype.map = function(f) {
- var retval = [];
- for (var i = 0; i < this.length; i++) {
- retval.push(f(this[i], i));
- }
- return retval;
-}
-
// Assigns all keys & values of |obj2| to |obj1|.
function extend(obj, obj2) {
for (var k in obj2) {
@@ -114,13 +108,28 @@ function fetchSchema() {
// and populate the templates.
fetchContent(SCHEMA, function(schemaContent) {
schema = JSON.parse(schemaContent);
- renderTemplate();
-
+ if (pageName.toLowerCase() == "samples") {
+ fetchSamples();
+ } else {
+ renderTemplate();
+ }
}, function(error) {
alert("Failed to load " + SCHEMA);
});
}
+function fetchSamples() {
+ // If we're rendering the samples directory, fetch the samples manifest.
+ fetchContent(SAMPLES, function(sampleManifest) {
+ var data = JSON.parse(sampleManifest);
+ samples = data.samples;
+ apiMapping = data.api;
+ renderTemplate();
+ }, function(error) {
+ renderTemplate();
+ });
+}
+
/**
* Fetches |url| and returns it's text contents from the xhr.responseText in
* onSuccess(content)
@@ -167,7 +176,7 @@ function fetchContent(url, onSuccess, onError) {
}
function renderTemplate() {
- schema.each(function(mod) {
+ schema.forEach(function(mod) {
if (mod.namespace == pageBase) {
// Do not render page for modules which are marked as "nodoc": true.
if (mod.nodoc) {
@@ -180,12 +189,38 @@ function renderTemplate() {
}
if (mod.types) {
- mod.types.each(function(type) {
+ mod.types.forEach(function(type) {
typeModule[type.id] = mod;
});
}
});
+ /**
+ * Special pages like the samples gallery may want to modify their template
+ * data to include additional information. This hook allows a page template
+ * to specify code that runs in the context of the api_page_generator.js
+ * file before the jstemplate is rendered.
+ *
+ * To specify such code, the page template should include a script block with
+ * a type of "text/prerenderjs" containing the code to be executed. Note that
+ * linking to an external file is not supported - code must be accessible
+ * via the script block's innerText property.
+ *
+ * Code that is run this way may modify the data sent to jstemplate by
+ * modifying the window.pageData variable. This code will also have access
+ * to any methods declared in the api_page_generator.js file. The code
+ * does not need to return any specific value to function.
+ *
+ * Note that code specified in this manner will be removed before the
+ * template is rendered, and will therefore not be exposed to the end user
+ * in the final rendered template.
+ */
+ var preRender = document.querySelector('script[type="text/prerenderjs"]');
+ if (preRender) {
+ preRender.parentElement.removeChild(preRender);
+ eval(preRender.innerText);
+ }
+
// Render to template
var input = new JsEvalContext(pageData);
var output = document.getElementsByTagName("body")[0];
@@ -210,7 +245,7 @@ function removeJsTemplateAttributes(root) {
var nodes = root.getElementsByTagName("*");
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i]
- jsattributes.each(function(attributeName) {
+ jsattributes.forEach(function(attributeName) {
n.removeAttribute(attributeName);
});
}
@@ -265,7 +300,8 @@ function selectCurrentPageOnLeftNav() {
/*
* Template Callout Functions
- * The jstProcess() will call out to these functions from within the page template
+ * The jstProcess() will call out to these functions from within the page
+ * template
*/
function stableAPIs() {
@@ -275,7 +311,7 @@ function stableAPIs() {
return module.namespace;
}).sort();
}
-
+
function experimentalAPIs() {
return schema.filter(function(module) {
return !module.nodoc && module.namespace.indexOf("experimental") == 0;
@@ -320,7 +356,7 @@ function getStaticTOC() {
var retval = [];
var lastH2;
- staticHNodes.each(function(n, i) {
+ staticHNodes.forEach(function(n, i) {
var anchorName = n.id || n.nodeName + "-" + i;
if (!n.id) {
var a = document.createElement('a');
@@ -407,7 +443,7 @@ function getTypeName(schema) {
if (schema.choices) {
var typeNames = [];
- schema.choices.each(function(c) {
+ schema.choices.forEach(function(c) {
typeNames.push(getTypeName(c));
});
@@ -425,7 +461,7 @@ function getTypeName(schema) {
function getSignatureString(parameters) {
var retval = [];
- parameters.each(function(param, i) {
+ parameters.forEach(function(param, i) {
retval.push(getTypeName(param) + " " + param.name);
});
diff --git a/chrome/common/extensions/docs/js/sample_search.js b/chrome/common/extensions/docs/js/sample_search.js
new file mode 100644
index 0000000..7e834d6
--- /dev/null
+++ b/chrome/common/extensions/docs/js/sample_search.js
@@ -0,0 +1,82 @@
+/**
+ * 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 testSearchSupport() {
+ var i = document.createElement("input");
+ i.setAttribute("type", "search");
+ return i.type !== "text";
+};
+
+function filterSamples() {
+ var clearlink = document.getElementById('clearlink');
+ var searchinput = document.getElementById('searchinput');
+ var noresults = document.getElementById('noresults');
+
+ var searchtext = searchinput.value.toUpperCase();
+ if (!canclear && searchtext != "" ) {
+ clearlink.style.display = "inline";
+ } else {
+ clearlink.style.display = "none";
+ }
+ if (searchtext == currentfilter) {
+ return;
+ } else {
+ currentfilter = searchtext;
+ }
+
+ noresults.style.display = 'none';
+ var num_found = 0;
+ for (var key in search_data) {
+ if (search_data.hasOwnProperty(key)) {
+ var sampleentry = document.getElementById(key);
+ if (search_data[key].indexOf(searchtext) == -1) {
+ sampleentry.style.display = "none";
+ } else {
+ sampleentry.style.display = "block";
+ num_found += 1;
+ }
+ }
+ }
+ if (num_found == 0) {
+ noresults.style.display = 'block';
+ }
+ removeSelected();
+};
+
+function removeSelected() {
+ var anchors = document.getElementsByTagName('a');
+ for (var i = 0, anchor; anchor = anchors[i]; i++) {
+ if (anchor.className == "selected") {
+ anchor.className = "";
+ }
+ }
+};
+
+function setFilter(text, target) {
+ var searchinput = document.getElementById('searchinput');
+ searchinput.value = text;
+ filterSamples();
+ target.className = "selected";
+ searchinput.focus();
+};
+
+function clearFilter() {
+ var searchinput = document.getElementById('searchinput');
+ searchinput.value = "";
+ filterSamples();
+ searchinput.focus();
+};
+
+function initSearch() {
+ var searchinput = document.getElementById('searchinput');
+ if (canclear) {
+ searchinput.addEventListener('click', filterSamples, false);
+ }
+};
+
+var currentfilter = "";
+var canclear = testSearchSupport();
+window.addEventListener('load', initSearch, false); \ No newline at end of file
diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html
index 2a21f9b..4b2664a 100644
--- a/chrome/common/extensions/docs/samples.html
+++ b/chrome/common/extensions/docs/samples.html
@@ -15,8 +15,7 @@
</script>
<script type="text/javascript" src="js/api_page_generator.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
- <title>Samples - Google Chrome Extensions - Google Code</title></head>
- <body> <div id="gc-container" class="labs">
+ <title>Samples - Google Chrome Extensions - Google Code</title></head><body> <div id="gc-container" class="labs">
<div id="devModeWarning">
You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files.
</div>
@@ -214,36 +213,18 @@
<h1 class="page_title">Samples</h1>
</div>
<!-- TABLE OF CONTENTS -->
- <div id="toc">
+ <div id="toc" style="display: none; ">
<h2>Contents</h2>
<ol>
<li>
- <a href="#featured">Sample extensions</a>
+ <a>h2Name</a>
<ol>
<li>
- <a href="#gmail">Google Mail Checker</a>
- </li><li>
- <a href="#subscribe_page_action">Subscribe in Feed Reader</a>
- </li><li>
- <a href="#news">News Reader</a>
- </li>
- </ol>
- </li><li>
- <a href="#otherExtensions">Other sample extensions</a>
- <ol>
- <li style="display: none; ">
- <a>h3Name</a>
- </li>
- </ol>
- </li><li>
- <a href="#viewsource">How to view the source code</a>
- <ol>
- <li style="display: none; ">
<a>h3Name</a>
</li>
</ol>
</li>
- <li style="display: none; ">
+ <li>
<a href="#apiReference">API reference</a>
<ol>
<li>
@@ -290,150 +271,1923 @@
</p>
<!-- STATIC CONTENT PLACEHOLDER -->
- <div id="static"><style>
-a img {
- border:0;
-}
-</style>
-
-<div id="pageData-showTOC" class="pageData">true</div>
-
-<p>
-This page shows some sample extensions,
-with links that let you install them
-and find their source code.
-Each sample also has links to the documentation
-for each feature used by the sample.
-</p>
-
-<p><b>Note:</b> To run these samples on Linux or Mac,
-you need to get on an early access release channel of Google Chrome.
-</p>
-
-<ul>
- <li> <b>Windows</b>: Use any release of Google Chrome</li>
- <li> <b>Linux</b>: Subscribe to the <a href="http://www.google.com/landing/chrome/beta/">Beta channel</a> </li>
- <li> <b>Mac</b>: Subscribe to the <a href="http://www.chromium.org/getting-involved/dev-channel#TOC-Mac">Dev channel</a> </li>
-</ul>
-
-<p>
-For more example code, see the
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/" target="_blank">Chromium examples directory</a>.
-For tips on using the code viewer, see
-<a href="#viewsource">How to view the source code</a>.
-</p>
-
-<h2 id="featured">Sample extensions</h2>
-
-<h3 id="gmail">Google Mail Checker</h3>
-
-<p>Adds a Google Mail button to the toolbar, displaying the number of unread messages in your inbox. Click the button to open your inbox.
-
-</p><p>Included with no charge is a swell animation when the number of unread items changes.
-
-</p><p><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dmihcahmgecmbnbcchbopgniflfhgnkff%26uc%26lang%3Den-US"><img src="images/google-mail-checker-capture.png" width="243" height="170" style="margin-bottom:0.5em"></a><br>
-<b><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dmihcahmgecmbnbcchbopgniflfhgnkff%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">Source code</a></b>
-
-<br><br>
-</p><p>Features used:
-
-</p><ul>
- <li><a href="browserAction.html">Browser action</a> (with canvas-based animation)
- </li><li><a href="browserAction.html#badge">Badge</a>
- </li><li><a href="background_pages.html">Background page</a>
- </li><li><a href="xhr.html">Cross-origin XMLHttpRequest</a>
- </li><li><a href="tabs.html">Tabs</a> module
-</li></ul>
-
-<br>
-
-<h3 id="subscribe_page_action">Subscribe in Feed Reader</h3>
-
-<p>Adds a small icon to the address bar when a web page contains a feed that can be subscribed to. When you click the icon, you'll see a preview of the feed and have the option to subscribe with the web-based reader of your choice.
-
-</p><p><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dnlbjncdgjeocebhnmkbbbdekmmmcbfjd%26uc%26lang%3Den-US"><img src="images/subscribe-cap1.png" style="margin-bottom:0.5em" width="342" height="165"></a>
-
-</p><p><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dnlbjncdgjeocebhnmkbbbdekmmmcbfjd%26uc%26lang%3Den-US"><img src="images/subscribe-cap2.png" style="margin-bottom:0.5em" width="566" height="327"></a><br>
-<b><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dnlbjncdgjeocebhnmkbbbdekmmmcbfjd%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/subscribe_page_action/">Source code</a></b>
-
-<br><br>
-</p><p>Features used:
-
-</p><ul>
- <li><a href="pageAction.html">Page action</a>
- </li><li><a href="background_pages.html">Background page</a>
- </li><li><a href="content_scripts.html">Content scripts</a>
- </li><li><a href="messaging.html">Message passing</a>
- </li><li><a href="xhr.html">Cross-origin XMLHttpRequest</a>
-</li></ul>
-
-<br>
-
-<h3 id="news">News Reader</h3>
-
-<p>Uses a popup to display the first 5 items from the "Google News - top news" RSS feed. The popup dynamically resizes itself to fit additional content.
-
-</p><p><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dmmdhomleggalggemanamhjdhafaabfdi%26uc%26lang%3Den-US"><img src="images/news.gif" style="margin-bottom:0.5em" width="475" height="346"></a><br>
-
-<b><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dmmdhomleggalggemanamhjdhafaabfdi%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">Source code</a></b>
-
-<br><br>
-</p><p>Features used:
-
-</p><ul>
- <li><a href="browserAction.html">Browser action</a>
- </li><li><a href="xhr.html">Cross-origin XMLHttpRequest</a>
-</li></ul>
-
-<br>
-<h2 id="otherExtensions">Other sample extensions</h2>
-<p>These samples use similar capabilities to the ones above, but to implement different features.</p>
-<dl>
- <dt>Chromium buildbot monitor</dt>
- <dd>Monitors the Chromium tree status <br>
- <b><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dafmppjmdopaajlhgcddfhfhfgincjeih%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">Source code</a></b>
- </dd>
-
- <dt>Mappy</dt>
- <dd>Lets you bring up a map for the first address on any web page <br>
- <b><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Dobjeacibkcphiplbghlbmlbnihbbmfjl%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/">Source code</a></b>
- </dd>
-
- <dt>Email this page</dt>
- <dd>Lets you share the current web page by sending it in an email <br>
- <b><a href="https://clients2.google.com/service/update2/crx?response=redirect&amp;x=id%3Ddbeoemfhkdniadbojeencpkgmobndpai%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/">Source code</a></b>
- </dd>
-</dl>
-
-
-<h2 id="viewsource">How to view the source code</h2>
-
-<p>
-The source code links in this page take you to a directory
-(for example,
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">examples/extensions/gmail</a>)
-that lists all the files in an extension.
-To view a file,
-first click its filename.
-If the page that comes up has an <b>as text</b> link,
-click that link to view the page's source code.
-</p>
+ <div id="static"><link rel="stylesheet" href="css/samples.css">
+<script>var search_data = {"121cca9e8942e456e3f25bbd16713b9bfe23e742":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","5da3e0ed090747eb6d5560e272c8bf17b7c0c2b6":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","c394974bd87e01605a3cca3cad8a7109de5bbda1":"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","c581cf06da17385735b64cc9077509ef13105518":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","24d780762055a4f290ecb3ac69384fbaea3a7718":"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","7cdb5ad608e5c2f224e0db28990b760dfbba5672":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","35911e7b2dc0145923ca43f499b5a61be52d30ec":"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","a3089c96b34036b3a0431124c25badd7f1c3d64a":"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 POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE","7dd4735797cd957876becbdad0f4b0e47cf4ac01":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE EXPERIMENTAL TABS CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTCHANGED CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTENTERED CHROME.EXPERIMENTAL.OMNIBOX.STYLEMATCH CHROME.EXPERIMENTAL.OMNIBOX.STYLENONE CHROME.EXPERIMENTAL.OMNIBOX.STYLEURL CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","35c467a5623117e399afc1187bdcc25b1c74bc5d":"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","16f1c9c9c20b78999b826f882c3d403d3c9f95ce":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","17071198171ed3535a2ee9c129653378ad54b5ce":"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","e6f9db199c82114ef857a140c81a9c7c41469333":"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","2fecb2a1bd23df9839021833e86c87b58e43d788":"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","957d89c0464bcfad4b4755e8747cf9c4073d8289":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","fad5d7059ba177d48e45d92e04da9e5ae4c2b8c2":"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.ONUPDATED CHROME.TABS.REMOVE","2e0d2082771d5e26be91efaeae390874e738239b":"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","ceb116611b727f6c2ad560098bb9c3c4a4d830f9":"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","e3bd4e4ff791ae63a16f16072252be4a7fccf43e":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","4663a9d47c09f43a46fadb09965d97ac4bb09d40":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","be628092c6fd9d39a82a52ad443c4a9cb09e031b":"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","572f82c2738f6c9a1911778e4d41f712b03c25bc":"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","282fc112fa63a680c0cbc90dc0463e3780c46d46":"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","d3f041b48f31db1a86dfe05b6740086554ebba31":"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","a772f968a7e977f8bbf9d74f43c6daca57067d1e":"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","fc80727c5f0bd5ba6cad74e9ec2519cbfc34cdd3":"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","e432a5c78298458aaa0f9c1c5b3fb010ffc2ed99":"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","5ffc8fd27bfc21f5205c8c5fe8290222c95a7eb4":"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","e22a739b78a7e5580d9318662390a79033f96d81":"OMNIBOX EXAMPLE BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTCHANGED CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTENTERED","24fb45f3b2192c163afb2399c3bdad91d837643e":"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","b42764aa301c7c340c9febcd492da962a453c8b6":"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","75e2de40348b5647d77b5f9c8dbdc43b868e87c8":"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.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","1ec0e2f3c645541d12dd49aa5ed6533f1203db58":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","5d2f97358bcef171b2b012159836781a7b0ae813":"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","47ff142798c27febf4a2ada551c671feec26605c":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","39dcafbdebb05e43acd35b5db14f360bc023a8b5":"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","b01d58ed12efa2a6b9ca152e19d15730cf1d84be":"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","99d24fe7b088c2380e0a158d70e9e5ae6c951165":"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>
+<script src="js/samples.js"></script>
+
+
+
+<div id="controls">
+ <div id="searchbox" class="controlbox">
+ <strong>Filter by keyword:</strong>
+ <input autofocus="" type="search" id="searchinput" placeholder="Type to search" onkeyup="filterSamples();">
+ <a id="clearlink" href="javascript:void(0);" onclick="clearFilter();" style="display: none;">clear</a>
+ </div>
+
+ <div id="filterbox" class="controlbox">
+ <strong>Filter by API:</strong>
+ <span>
+ <span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.bookmarks', this)">chrome.bookmarks</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.browserAction', this)">chrome.browserAction</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.contextMenus', this)">chrome.contextMenus</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.cookies', this)">chrome.cookies</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.experimental', this)">chrome.experimental</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.extension', this)">chrome.extension</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.history', this)">chrome.history</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.i18n', this)">chrome.i18n</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.idle', this)">chrome.idle</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.pageAction', this)">chrome.pageAction</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.tabs', this)">chrome.tabs</a><span>, </span>
+ </span><span>
+ <a href="javascript:void(0);" onclick="setFilter('chrome.windows', this)">chrome.windows</a><span style="display: none; ">, </span>
+ </span>
+ </span>
+ </div>
+</div>
-<p>
-To download the file,
-right-click the <b>download</b> link.
-You can also left-click the <b>download</b> link
-to view the source code for files such as
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/manifest.json">manifest.json</a>
-that have no <b>as text</b> link.
-</p>
+<div class="sample" id="121cca9e8942e456e3f25bbd16713b9bfe23e742">
+ <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/api/browserAction/set_icon_path/">A browser action which changes its icon when clicked.</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</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="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setIcon">chrome.browserAction.setIcon</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/api/browserAction/set_icon_path/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_icon_path/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="5da3e0ed090747eb6d5560e272c8bf17b7c0c2b6">
+ <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/api/browserAction/set_page_color/">A browser action with a popup that changes the page color.</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</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="tabs.html#method-executeScript">chrome.tabs.executeScript</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/api/browserAction/set_page_color/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/api/browserAction/set_page_color/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="c394974bd87e01605a3cca3cad8a7109de5bbda1">
+ <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/api/browserAction/make_page_red/">A browser action with no icon that makes the page red</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</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="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeBackgroundColor">chrome.browserAction.setBadgeBackgroundColor</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeText">chrome.browserAction.setBadgeText</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-executeScript">chrome.tabs.executeScript</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/api/browserAction/make_page_red/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/make_page_red/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="c581cf06da17385735b64cc9077509ef13105518">
+ <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/api/i18n/getMessage/">AcceptLanguage</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Returns accept languages of the browser</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="i18n.html#method-getAcceptLanguages">chrome.i18n.getAcceptLanguages</a></code>
+ </li><li>
+ <code><a href="i18n.html#method-getMessage">chrome.i18n.getMessage</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/api/i18n/getMessage/_locales/en_US/messages.json?content-type=text/plain">_locales/en_US/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/_locales/es/messages.json?content-type=text/plain">_locales/es/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/_locales/sr/messages.json?content-type=text/plain">_locales/sr/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/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/api/i18n/getMessage/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="24d780762055a4f290ecb3ac69384fbaea3a7718">
+ <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/api/pageAction/set_icon/">Animated Page Action</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>page_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>This extension adds an animated browser action to the toolbar.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="pageAction.html#method-hide">chrome.pageAction.hide</a></code>
+ </li><li>
+ <code><a href="pageAction.html#event-onClicked">chrome.pageAction.onClicked</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-setIcon">chrome.pageAction.setIcon</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-setTitle">chrome.pageAction.setTitle</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-show">chrome.pageAction.show</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onSelectionChanged">chrome.tabs.onSelectionChanged</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/api/pageAction/set_icon/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/set_icon/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="7cdb5ad608e5c2f224e0db28990b760dfbba5672">
+ <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/api/override/blank_ntp/">Blank new tab page</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>chrome_url_overrides</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p></p>
+ <div class="apicalls" style="display: none; "><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a></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/api/override/blank_ntp/blank.html?content-type=text/plain">blank.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/blank_ntp/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="35911e7b2dc0145923ca43f499b5a61be52d30ec">
+ <img class="icon" src="examples/extensions/fx/icon.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/">Chrome Sounds</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>bookmarks</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Enjoy a more magical and immersive experience when browsing the web using the power of sound.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="bookmarks.html#event-onCreated">chrome.bookmarks.onCreated</a></code>
+ </li><li>
+ <code><a href="bookmarks.html#event-onMoved">chrome.bookmarks.onMoved</a></code>
+ </li><li>
+ <code><a href="bookmarks.html#event-onRemoved">chrome.bookmarks.onRemoved</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="extension.html#event-onRequest">chrome.extension.onRequest</a></code>
+ </li><li>
+ <code><a href="extension.html#method-sendRequest">chrome.extension.sendRequest</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onAttached">chrome.tabs.onAttached</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onCreated">chrome.tabs.onCreated</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onDetached">chrome.tabs.onDetached</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onMoved">chrome.tabs.onMoved</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onRemoved">chrome.tabs.onRemoved</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onSelectionChanged">chrome.tabs.onSelectionChanged</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="windows.html#event-onCreated">chrome.windows.onCreated</a></code>
+ </li><li>
+ <code><a href="windows.html#event-onFocusChanged">chrome.windows.onFocusChanged</a></code>
+ </li><li>
+ <code><a href="windows.html#event-onRemoved">chrome.windows.onRemoved</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/fx/bg.html?content-type=text/plain">bg.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/bg.js?content-type=text/plain">bg.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/content.js?content-type=text/plain">content.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/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/fx/options.html?content-type=text/plain">options.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="a3089c96b34036b3a0431124c25badd7f1c3d64a">
+ <img class="icon" src="examples/extensions/buildbot/icon.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/">Chromium Buildbot Monitor</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Displays the status of the Chromium buildbot in the toolbar. Click to see more detailed status in a popup.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#method-setBadgeBackgroundColor">chrome.browserAction.setBadgeBackgroundColor</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeText">chrome.browserAction.setBadgeText</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setTitle">chrome.browserAction.setTitle</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/buildbot/bg.html?content-type=text/plain">bg.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/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/buildbot/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="7dd4735797cd957876becbdad0f4b0e47cf4ac01">
+ <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/chrome_search/">Chromium Search</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>experimental</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Add support to the omnibox to search the Chromium source code.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="experimental.omnibox.html#event-onInputChanged">chrome.experimental.omnibox.onInputChanged</a></code>
+ </li><li>
+ <code><a href="experimental.omnibox.html#event-onInputEntered">chrome.experimental.omnibox.onInputEntered</a></code>
+ </li><li>
+ <code><a href="experimental.omnibox.html#method-styleMatch">chrome.experimental.omnibox.styleMatch</a></code>
+ </li><li>
+ <code><a href="experimental.omnibox.html#method-styleNone">chrome.experimental.omnibox.styleNone</a></code>
+ </li><li>
+ <code><a href="experimental.omnibox.html#method-styleUrl">chrome.experimental.omnibox.styleUrl</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</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/chrome_search/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="35c467a5623117e399afc1187bdcc25b1c74bc5d">
+ <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/api/i18n/cld/">CLD</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Displays the language of a tab</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#method-setBadgeText">chrome.browserAction.setBadgeText</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-detectLanguage">chrome.tabs.detectLanguage</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onSelectionChanged">chrome.tabs.onSelectionChanged</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</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/api/i18n/cld/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/cld/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="16f1c9c9c20b78999b826f882c3d403d3c9f95ce">
+ <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/api/contextMenus/basic/">Context Menus Sample</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>contextMenus</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Shows some of the features of the Context Menus API</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="contextMenus.html#method-create">chrome.contextMenus.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/api/contextMenus/basic/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/contextMenus/basic/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/api/contextMenus/basic/sample.js?content-type=text/plain">sample.js</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="17071198171ed3535a2ee9c129653378ad54b5ce">
+ <img class="icon" src="examples/api/cookies/cookie.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/">Cookie API Test Extension</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>cookies</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Testing Cookie API</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="cookies.html#method-get">chrome.cookies.get</a></code>
+ </li><li>
+ <code><a href="cookies.html#method-getAll">chrome.cookies.getAll</a></code>
+ </li><li>
+ <code><a href="cookies.html#event-onChanged">chrome.cookies.onChanged</a></code>
+ </li><li>
+ <code><a href="cookies.html#method-remove">chrome.cookies.remove</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</a></code>
+ </li><li>
+ <code><a href="windows.html#method-get">chrome.windows.get</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getAll">chrome.windows.getAll</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/api/cookies/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/manager.html?content-type=text/plain">manager.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="e6f9db199c82114ef857a140c81a9c7c41469333">
+ <img class="icon" src="examples/howto/contentscript_xhr/sample-128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/">Cross-domain XMLHttpRequest from a content script</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>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.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="extension.html#event-onRequest">chrome.extension.onRequest</a></code>
+ </li><li>
+ <code><a href="extension.html#method-sendRequest">chrome.extension.sendRequest</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/howto/contentscript_xhr/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/contentscript.js?content-type=text/plain">contentscript.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="2fecb2a1bd23df9839021833e86c87b58e43d788">
+ <img class="icon" src="examples/extensions/email_this_page/mail_128x128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/">Email this page (by Google)</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>This extension adds an email button to the toolbar which allows you to email the page link using your default mail client or Gmail.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="extension.html#method-connect">chrome.extension.connect</a></code>
+ </li><li>
+ <code><a href="extension.html#event-onConnect">chrome.extension.onConnect</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-executeScript">chrome.tabs.executeScript</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</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/email_this_page/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/content_script.js?content-type=text/plain">content_script.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/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/email_this_page/options.html?content-type=text/plain">options.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="957d89c0464bcfad4b4755e8747cf9c4073d8289">
+ <img class="icon" src="examples/tutorials/analytics/analytics-extension-icon-128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/">Event Tracking with Google Analytics</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>A sample extension which uses Google Analytics to track usage.</p>
+ <div class="apicalls" style="display: none; "><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a></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/tutorials/analytics/analytics.js?content-type=text/plain">analytics.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/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/tutorials/analytics/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="fad5d7059ba177d48e45d92e04da9e5ae4c2b8c2">
+ <img class="icon" src="examples/extensions/gdocs/img/docs_spreadsheets-128.gif">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/">Google Document List Viewer</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Demonstrates how to use OAuth to connect the Google Documents List Data API.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#method-setBadgeText">chrome.browserAction.setBadgeText</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-remove">chrome.tabs.remove</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/gdocs/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/js/jquery-1.4.1.min.js?content-type=text/plain">js/jquery-1.4.1.min.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/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/gdocs/options.html?content-type=text/plain">options.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="2e0d2082771d5e26be91efaeae390874e738239b">
+ <img class="icon" src="examples/extensions/gmail/icon_128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">Google Mail Checker</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Displays the number of unread messages in your Google Mail inbox. You can also click the button to open your inbox.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeBackgroundColor">chrome.browserAction.setBadgeBackgroundColor</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeText">chrome.browserAction.setBadgeText</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setIcon">chrome.browserAction.setIcon</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="i18n.html#method-getMessage">chrome.i18n.getMessage</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getAllInWindow">chrome.tabs.getAllInWindow</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</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/gmail/_locales/ar/messages.json?content-type=text/plain">_locales/ar/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/bg/messages.json?content-type=text/plain">_locales/bg/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ca/messages.json?content-type=text/plain">_locales/ca/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/cs/messages.json?content-type=text/plain">_locales/cs/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/da/messages.json?content-type=text/plain">_locales/da/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/de/messages.json?content-type=text/plain">_locales/de/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/el/messages.json?content-type=text/plain">_locales/el/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/en_GB/messages.json?content-type=text/plain">_locales/en_GB/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/es/messages.json?content-type=text/plain">_locales/es/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/es_419/messages.json?content-type=text/plain">_locales/es_419/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/et/messages.json?content-type=text/plain">_locales/et/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/fi/messages.json?content-type=text/plain">_locales/fi/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/fil/messages.json?content-type=text/plain">_locales/fil/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/fr/messages.json?content-type=text/plain">_locales/fr/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/he/messages.json?content-type=text/plain">_locales/he/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/hi/messages.json?content-type=text/plain">_locales/hi/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/hr/messages.json?content-type=text/plain">_locales/hr/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/hu/messages.json?content-type=text/plain">_locales/hu/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/id/messages.json?content-type=text/plain">_locales/id/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/it/messages.json?content-type=text/plain">_locales/it/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ja/messages.json?content-type=text/plain">_locales/ja/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ko/messages.json?content-type=text/plain">_locales/ko/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/lt/messages.json?content-type=text/plain">_locales/lt/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/lv/messages.json?content-type=text/plain">_locales/lv/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/nb/messages.json?content-type=text/plain">_locales/nb/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/nl/messages.json?content-type=text/plain">_locales/nl/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/pl/messages.json?content-type=text/plain">_locales/pl/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/pt_BR/messages.json?content-type=text/plain">_locales/pt_BR/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/pt_PT/messages.json?content-type=text/plain">_locales/pt_PT/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ro/messages.json?content-type=text/plain">_locales/ro/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ru/messages.json?content-type=text/plain">_locales/ru/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sk/messages.json?content-type=text/plain">_locales/sk/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sl/messages.json?content-type=text/plain">_locales/sl/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sr/messages.json?content-type=text/plain">_locales/sr/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sv/messages.json?content-type=text/plain">_locales/sv/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/th/messages.json?content-type=text/plain">_locales/th/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/tr/messages.json?content-type=text/plain">_locales/tr/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/uk/messages.json?content-type=text/plain">_locales/uk/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/vi/messages.json?content-type=text/plain">_locales/vi/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/zh_CN/messages.json?content-type=text/plain">_locales/zh_CN/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/zh_TW/messages.json?content-type=text/plain">_locales/zh_TW/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/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/gmail/options.html?content-type=text/plain">options.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="ceb116611b727f6c2ad560098bb9c3c4a4d830f9">
+ <img class="icon" src="examples/extensions/wave/128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/">Google Wave Notifier</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Find out when you have new waves and preview them fast.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-remove">chrome.tabs.remove</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/wave/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/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/wave/options.html?content-type=text/plain">options.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/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/wave/prettyload.js?content-type=text/plain">prettyload.js</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="e3bd4e4ff791ae63a16f16072252be4a7fccf43e">
+ <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/tutorials/getstarted/">Hello World</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>The first extension that I made.</p>
+ <div class="apicalls" style="display: none; "><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a></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/tutorials/getstarted/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/tutorials/getstarted/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="4663a9d47c09f43a46fadb09965d97ac4bb09d40">
+ <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/api/override/override_igoogle/">iGoogle new tab page</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>chrome_url_overrides</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p></p>
+ <div class="apicalls" style="display: none; "><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a></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/api/override/override_igoogle/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/api/override/override_igoogle/redirect.html?content-type=text/plain">redirect.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="be628092c6fd9d39a82a52ad443c4a9cb09e031b">
+ <img class="icon" src="examples/extensions/mappy/icon.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/">Mappy</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>page_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Finds addresses in the web page you're on and pops up a map window.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="extension.html#event-onRequest">chrome.extension.onRequest</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-hide">chrome.pageAction.hide</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-setTitle">chrome.pageAction.setTitle</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-show">chrome.pageAction.show</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onSelectionChanged">chrome.tabs.onSelectionChanged</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-sendRequest">chrome.tabs.sendRequest</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/mappy/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/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/mappy/mappy_content_script.js?content-type=text/plain">mappy_content_script.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="572f82c2738f6c9a1911778e4d41f712b03c25bc">
+ <img class="icon" src="examples/api/windows/merge_windows/merge_windows_128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/windows/merge_windows/">Merge Windows</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Merges all of the browser's windows into the current window</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getAllInWindow">chrome.tabs.getAllInWindow</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-move">chrome.tabs.move</a></code>
+ </li><li>
+ <code><a href="windows.html#method-get">chrome.windows.get</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getAll">chrome.windows.getAll</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getCurrent">chrome.windows.getCurrent</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/api/windows/merge_windows/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/windows/merge_windows/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="282fc112fa63a680c0cbc90dc0463e3780c46d46">
+ <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/api/messaging/timer/">Message Timer</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Times how long it takes to send a message to a content script and back.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="extension.html#event-onConnect">chrome.extension.onConnect</a></code>
+ </li><li>
+ <code><a href="extension.html#event-onRequest">chrome.extension.onRequest</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-connect">chrome.tabs.connect</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-sendRequest">chrome.tabs.sendRequest</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/api/messaging/timer/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/api/messaging/timer/page.js?content-type=text/plain">page.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="d3f041b48f31db1a86dfe05b6740086554ebba31">
+ <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/api/bookmarks/basic/">My Bookmarks</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>bookmarks</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>A browser action with a popup dump of all bookmarks, including search, add, edit and delete.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="bookmarks.html#method-create">chrome.bookmarks.create</a></code>
+ </li><li>
+ <code><a href="bookmarks.html#method-get">chrome.bookmarks.get</a></code>
+ </li><li>
+ <code><a href="bookmarks.html#method-getTree">chrome.bookmarks.getTree</a></code>
+ </li><li>
+ <code><a href="bookmarks.html#method-remove">chrome.bookmarks.remove</a></code>
+ </li><li>
+ <code><a href="bookmarks.html#method-update">chrome.bookmarks.update</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/api/bookmarks/basic/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/api/bookmarks/basic/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="a772f968a7e977f8bbf9d74f43c6daca57067d1e">
+ <img class="icon" src="examples/extensions/news_a11y/news_icon.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_a11y/">News Reader</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Displays the first 5 items from the 'Google News - top news' RSS feed in a popup.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <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/news_a11y/feed.html?content-type=text/plain">feed.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_a11y/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="fc80727c5f0bd5ba6cad74e9ec2519cbfc34cdd3">
+ <img class="icon" src="examples/extensions/news/news_icon.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">News Reader</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Displays the first 5 items from the 'Google News - top news' RSS feed in a popup.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <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/news/feed.html?content-type=text/plain">feed.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="e432a5c78298458aaa0f9c1c5b3fb010ffc2ed99">
+ <img class="icon" src="examples/extensions/news_i18n/news_icon.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/">News Reader</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Displays the first 5 items from the 'Google News - top news' RSS feed in a popup.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="i18n.html#method-getMessage">chrome.i18n.getMessage</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/news_i18n/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/_locales/es/messages.json?content-type=text/plain">_locales/es/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/_locales/sr/messages.json?content-type=text/plain">_locales/sr/messages.json</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/feed.html?content-type=text/plain">feed.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="5ffc8fd27bfc21f5205c8c5fe8290222c95a7eb4">
+ <img class="icon" src="examples/api/notifications/128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/">Notification Demo</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>notifications</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Shows off desktop notifications, which are "toast" windows that pop up on the desktop.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <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/api/notifications/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/error.html?content-type=text/plain">error.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/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/api/notifications/options.html?content-type=text/plain">options.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="e22a739b78a7e5580d9318662390a79033f96d81">
+ <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/api/omnibox/">Omnibox Example</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>experimental</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="experimental.omnibox.html#event-onInputChanged">chrome.experimental.omnibox.onInputChanged</a></code>
+ </li><li>
+ <code><a href="experimental.omnibox.html#event-onInputEntered">chrome.experimental.omnibox.onInputEntered</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/api/omnibox/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="24fb45f3b2192c163afb2399c3bdad91d837643e">
+ <img class="icon" src="examples/api/pageAction/pageaction_by_content/sandwich-128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/">Page action by content</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>page_action</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Shows a page action for HTML pages containing the word 'sandwich'</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="extension.html#event-onRequest">chrome.extension.onRequest</a></code>
+ </li><li>
+ <code><a href="extension.html#method-sendRequest">chrome.extension.sendRequest</a></code>
+ </li><li>
+ <code><a href="pageAction.html#method-show">chrome.pageAction.show</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/api/pageAction/pageaction_by_content/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/contentscript.js?content-type=text/plain">contentscript.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="b42764aa301c7c340c9febcd492da962a453c8b6">
+ <img class="icon" src="examples/api/pageAction/pageaction_by_url/icon-128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_url/">Page action by URL</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>page_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Shows a page action for urls which have the letter 'g' in them.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="pageAction.html#method-show">chrome.pageAction.show</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</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/api/pageAction/pageaction_by_url/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_url/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="75e2de40348b5647d77b5f9c8dbdc43b868e87c8">
+ <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/benchmark/">Page Benchmarker</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>options_page</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Chromium Page Benchmarker.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeBackgroundColor">chrome.browserAction.setBadgeBackgroundColor</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setBadgeText">chrome.browserAction.setBadgeText</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setTitle">chrome.browserAction.setTitle</a></code>
+ </li><li>
+ <code><a href="extension.html#method-connect">chrome.extension.connect</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getExtensionTabs">chrome.extension.getExtensionTabs</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="extension.html#event-onConnect">chrome.extension.onConnect</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getAllInWindow">chrome.tabs.getAllInWindow</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-remove">chrome.tabs.remove</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</a></code>
+ </li><li>
+ <code><a href="windows.html#method-get">chrome.windows.get</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getCurrent">chrome.windows.getCurrent</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/benchmark/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/jsevalcontext.js?content-type=text/plain">jst/jsevalcontext.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/jstemplate.js?content-type=text/plain">jst/jstemplate.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/jstemplate_test.js?content-type=text/plain">jst/jstemplate_test.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/util.js?content-type=text/plain">jst/util.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/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/benchmark/options.html?content-type=text/plain">options.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/script.js?content-type=text/plain">script.js</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="1ec0e2f3c645541d12dd49aa5ed6533f1203db58">
+ <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/api/browserAction/print/">Print this page</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Adds a print button to the browser.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</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/api/browserAction/print/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/print/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="5d2f97358bcef171b2b012159836781a7b0ae813">
+ <img class="icon" src="examples/extensions/oauth_contacts/img/icon-128.png">
+ <img class="icon" src="images/sample-default-icon.png" style="display: none; ">
+ <h2 class="name">
+ <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/">Sample - OAuth Contacts</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Uses OAuth to connect to Google's contacts service and display a list of your contacts.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="browserAction.html#method-setIcon">chrome.browserAction.setIcon</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-remove">chrome.tabs.remove</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/oauth_contacts/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/contacts.html?content-type=text/plain">contacts.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/manifest.json?content-type=text/plain">manifest.json</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="47ff142798c27febf4a2ada551c671feec26605c">
+ <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/api/processes/show_tabs/">Show Tabs in Process</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>experimental</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>popup</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Adds a browser action showing which tabs share the current tab's process.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="experimental.processes.html#method-getProcessForTab">chrome.experimental.processes.getProcessForTab</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</a></code>
+ </li><li>
+ <code><a href="windows.html#method-get">chrome.windows.get</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getAll">chrome.windows.getAll</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getCurrent">chrome.windows.getCurrent</a></code>
+ </li><li>
+ <code><a href="windows.html#method-update">chrome.windows.update</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/api/processes/show_tabs/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/api/processes/show_tabs/popup.html?content-type=text/plain">popup.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="39dcafbdebb05e43acd35b5db14f360bc023a8b5">
+ <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/api/tabs/inspector/">Tab Inspector</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Utility for working with the extension tabs api</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-get">chrome.tabs.get</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getAllInWindow">chrome.tabs.getAllInWindow</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-getSelected">chrome.tabs.getSelected</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-move">chrome.tabs.move</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onAttached">chrome.tabs.onAttached</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onCreated">chrome.tabs.onCreated</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onDetached">chrome.tabs.onDetached</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onMoved">chrome.tabs.onMoved</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onRemoved">chrome.tabs.onRemoved</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onSelectionChanged">chrome.tabs.onSelectionChanged</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-remove">chrome.tabs.remove</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-update">chrome.tabs.update</a></code>
+ </li><li>
+ <code><a href="windows.html#method-create">chrome.windows.create</a></code>
+ </li><li>
+ <code><a href="windows.html#method-get">chrome.windows.get</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getAll">chrome.windows.getAll</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getCurrent">chrome.windows.getCurrent</a></code>
+ </li><li>
+ <code><a href="windows.html#method-getLastFocused">chrome.windows.getLastFocused</a></code>
+ </li><li>
+ <code><a href="windows.html#event-onCreated">chrome.windows.onCreated</a></code>
+ </li><li>
+ <code><a href="windows.html#event-onFocusChanged">chrome.windows.onFocusChanged</a></code>
+ </li><li>
+ <code><a href="windows.html#event-onRemoved">chrome.windows.onRemoved</a></code>
+ </li><li>
+ <code><a href="windows.html#method-remove">chrome.windows.remove</a></code>
+ </li><li>
+ <code><a href="windows.html#method-update">chrome.windows.update</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/api/tabs/inspector/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/jstemplate_compiled.js?content-type=text/plain">jstemplate_compiled.js</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/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/api/tabs/inspector/tabs_api.html?content-type=text/plain">tabs_api.html</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="b01d58ed12efa2a6b9ca152e19d15730cf1d84be">
+ <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/api/tabs/screenshot/">Test Screenshot Extension</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>background_page</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>browser_action</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Demonstrate screenshot functionality in the chrome.tabs api.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="browserAction.html#event-onClicked">chrome.browserAction.onClicked</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getURL">chrome.extension.getURL</a></code>
+ </li><li>
+ <code><a href="extension.html#method-getViews">chrome.extension.getViews</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-captureVisibleTab">chrome.tabs.captureVisibleTab</a></code>
+ </li><li>
+ <code><a href="tabs.html#method-create">chrome.tabs.create</a></code>
+ </li><li>
+ <code><a href="tabs.html#event-onUpdated">chrome.tabs.onUpdated</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/api/tabs/screenshot/background.html?content-type=text/plain">background.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/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/api/tabs/screenshot/screenshot.html?content-type=text/plain">screenshot.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/screenshot.js?content-type=text/plain">screenshot.js</a></code>
+ </li>
+ </ul>
+ </div>
+</div><div class="sample" id="99d24fe7b088c2380e0a158d70e9e5ae6c951165">
+ <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/api/history/showHistory/">Typed URL History</a>
+ </h2>
+ <p class="metadata features">Uses
+ <span>
+ <strong>browser_action</strong><span>, </span>
+ <span style="display: none; "> and</span>
+ </span><span>
+ <strong>history</strong><span style="display: none; ">, </span>
+ <span> and</span>
+ </span><span>
+ <strong>tabs</strong><span style="display: none; ">, </span>
+ <span style="display: none; "> and</span>
+ </span>
+ </p>
+ <p>Reads your history, and shows the top ten pages you go to by typing the URL.</p>
+ <div class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li>
+ <code><a href="history.html#method-getVisits">chrome.history.getVisits</a></code>
+ </li><li>
+ <code><a href="history.html#method-search">chrome.history.search</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/api/history/showHistory/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/api/history/showHistory/typedUrls.html?content-type=text/plain">typedUrls.html</a></code>
+ </li><li>
+ <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/history/showHistory/typedUrls.js?content-type=text/plain">typedUrls.js</a></code>
+ </li>
+ </ul>
+ </div>
+</div>
-<p>
-We're working on a way to make it easier to look at the sample source code.
-If you'd like to track our progress,
-put a star by bug <a href="http://code.google.com/p/chromium/issues/detail?id=25247">25247</a>.
-</p>
+<div id="noresults" style="display:none">
+ Sorry, no results were found.
+</div>
</div>
diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json
new file mode 100644
index 0000000..e7b6cb1
--- /dev/null
+++ b/chrome/common/extensions/docs/samples.json
@@ -0,0 +1,1237 @@
+{
+ "api": {
+ "chrome.experimental.webRequest.onHeadersReceived": "experimental.webRequest.html#event-onHeadersReceived",
+ "chrome.browserAction.onClicked": "browserAction.html#event-onClicked",
+ "chrome.history.getVisits": "history.html#method-getVisits",
+ "chrome.bookmarks.onImportEnded": "bookmarks.html#event-onImportEnded",
+ "chrome.history.search": "history.html#method-search",
+ "chrome.experimental.omnibox.onInputCancelled": "experimental.omnibox.html#event-onInputCancelled",
+ "chrome.bookmarks.remove": "bookmarks.html#method-remove",
+ "chrome.experimental.webNavigation.onErrorOccurred": "experimental.webNavigation.html#event-onErrorOccurred",
+ "chrome.history.deleteUrl": "history.html#method-deleteUrl",
+ "chrome.experimental.omnibox.styleNone": "experimental.omnibox.html#method-styleNone",
+ "chrome.bookmarks.onMoved": "bookmarks.html#event-onMoved",
+ "chrome.browserAction.setBadgeBackgroundColor": "browserAction.html#method-setBadgeBackgroundColor",
+ "chrome.pageAction.setTitle": "pageAction.html#method-setTitle",
+ "chrome.bookmarks.onImportBegan": "bookmarks.html#event-onImportBegan",
+ "chrome.experimental.omnibox.styleDim": "experimental.omnibox.html#method-styleDim",
+ "chrome.experimental.processes.getProcessForTab": "experimental.processes.html#method-getProcessForTab",
+ "chrome.bookmarks.getTree": "bookmarks.html#method-getTree",
+ "chrome.experimental.infobars.show": "experimental.infobars.html#method-show",
+ "chrome.windows.get": "windows.html#method-get",
+ "chrome.extension.sendRequest": "extension.html#method-sendRequest",
+ "chrome.windows.getAll": "windows.html#method-getAll",
+ "chrome.tabs.captureVisibleTab": "tabs.html#method-captureVisibleTab",
+ "chrome.idle.onStateChanged": "idle.html#event-onStateChanged",
+ "chrome.i18n.getMessage": "i18n.html#method-getMessage",
+ "chrome.bookmarks.import": "bookmarks.html#method-import",
+ "chrome.extension.onConnect": "extension.html#event-onConnect",
+ "chrome.bookmarks.removeTree": "bookmarks.html#method-removeTree",
+ "chrome.bookmarks.get": "bookmarks.html#method-get",
+ "chrome.bookmarks.getRecent": "bookmarks.html#method-getRecent",
+ "chrome.history.onVisitRemoved": "history.html#event-onVisitRemoved",
+ "chrome.windows.getCurrent": "windows.html#method-getCurrent",
+ "chrome.bookmarks.onChanged": "bookmarks.html#event-onChanged",
+ "chrome.tabs.detectLanguage": "tabs.html#method-detectLanguage",
+ "chrome.windows.onRemoved": "windows.html#event-onRemoved",
+ "chrome.experimental.clipboard.executePaste": "experimental.clipboard.html#method-executePaste",
+ "chrome.experimental.webNavigation.onCompleted": "experimental.webNavigation.html#event-onCompleted",
+ "chrome.tabs.update": "tabs.html#method-update",
+ "chrome.history.deleteRange": "history.html#method-deleteRange",
+ "chrome.tabs.connect": "tabs.html#method-connect",
+ "chrome.cookies.set": "cookies.html#method-set",
+ "chrome.experimental.webNavigation.onBeforeNavigate": "experimental.webNavigation.html#event-onBeforeNavigate",
+ "chrome.pageAction.setIcon": "pageAction.html#method-setIcon",
+ "chrome.experimental.clipboard.executeCopy": "experimental.clipboard.html#method-executeCopy",
+ "chrome.bookmarks.move": "bookmarks.html#method-move",
+ "chrome.experimental.webRequest.onBeforeRedirect": "experimental.webRequest.html#event-onBeforeRedirect",
+ "chrome.tabs.getCurrent": "tabs.html#method-getCurrent",
+ "chrome.browserAction.setTitle": "browserAction.html#method-setTitle",
+ "chrome.contextMenus.remove": "contextMenus.html#method-remove",
+ "chrome.experimental.omnibox.onInputStarted": "experimental.omnibox.html#event-onInputStarted",
+ "chrome.experimental.webNavigation.onBeforeRetarget": "experimental.webNavigation.html#event-onBeforeRetarget",
+ "chrome.tabs.create": "tabs.html#method-create",
+ "chrome.cookies.get": "cookies.html#method-get",
+ "chrome.experimental.webRequest.onBeforeRequest": "experimental.webRequest.html#event-onBeforeRequest",
+ "chrome.windows.onCreated": "windows.html#event-onCreated",
+ "chrome.experimental.webNavigation.onCommitted": "experimental.webNavigation.html#event-onCommitted",
+ "chrome.bookmarks.create": "bookmarks.html#method-create",
+ "chrome.tabs.onCreated": "tabs.html#event-onCreated",
+ "chrome.cookies.getAllCookieStores": "cookies.html#method-getAllCookieStores",
+ "chrome.tabs.get": "tabs.html#method-get",
+ "chrome.extension.getViews": "extension.html#method-getViews",
+ "chrome.i18n.getAcceptLanguages": "i18n.html#method-getAcceptLanguages",
+ "chrome.experimental.omnibox.styleUrl": "experimental.omnibox.html#method-styleUrl",
+ "chrome.experimental.webRequest.onCompleted": "experimental.webRequest.html#event-onCompleted",
+ "chrome.bookmarks.onCreated": "bookmarks.html#event-onCreated",
+ "chrome.pageAction.show": "pageAction.html#method-show",
+ "chrome.bookmarks.search": "bookmarks.html#method-search",
+ "chrome.extension.onRequest": "extension.html#event-onRequest",
+ "chrome.extension.getBackgroundPage": "extension.html#method-getBackgroundPage",
+ "chrome.pageAction.hide": "pageAction.html#method-hide",
+ "chrome.experimental.omnibox.styleMatch": "experimental.omnibox.html#method-styleMatch",
+ "chrome.tabs.executeScript": "tabs.html#method-executeScript",
+ "chrome.cookies.remove": "cookies.html#method-remove",
+ "chrome.extension.getExtensionTabs": "extension.html#method-getExtensionTabs",
+ "chrome.tabs.onRemoved": "tabs.html#event-onRemoved",
+ "chrome.tabs.insertCSS": "tabs.html#method-insertCSS",
+ "chrome.bookmarks.getChildren": "bookmarks.html#method-getChildren",
+ "chrome.pageAction.onClicked": "pageAction.html#event-onClicked",
+ "chrome.windows.create": "windows.html#method-create",
+ "chrome.extension.onConnectExternal": "extension.html#event-onConnectExternal",
+ "chrome.cookies.getAll": "cookies.html#method-getAll",
+ "chrome.extension.onRequestExternal": "extension.html#event-onRequestExternal",
+ "chrome.bookmarks.onRemoved": "bookmarks.html#event-onRemoved",
+ "chrome.contextMenus.update": "contextMenus.html#method-update",
+ "chrome.bookmarks.export": "bookmarks.html#method-export",
+ "chrome.experimental.clipboard.executeCut": "experimental.clipboard.html#method-executeCut",
+ "chrome.windows.getLastFocused": "windows.html#method-getLastFocused",
+ "chrome.tabs.onSelectionChanged": "tabs.html#event-onSelectionChanged",
+ "chrome.cookies.onChanged": "cookies.html#event-onChanged",
+ "chrome.windows.update": "windows.html#method-update",
+ "chrome.extension.getURL": "extension.html#method-getURL",
+ "chrome.idle.queryState": "idle.html#method-queryState",
+ "chrome.experimental.omnibox.onInputChanged": "experimental.omnibox.html#event-onInputChanged",
+ "chrome.experimental.webRequest.onErrorOccurred": "experimental.webRequest.html#event-onErrorOccurred",
+ "chrome.tabs.onMoved": "tabs.html#event-onMoved",
+ "chrome.experimental.omnibox.sendSuggestions": "experimental.omnibox.html#method-sendSuggestions",
+ "chrome.bookmarks.update": "bookmarks.html#method-update",
+ "chrome.contextMenus.removeAll": "contextMenus.html#method-removeAll",
+ "chrome.windows.remove": "windows.html#method-remove",
+ "chrome.tabs.sendRequest": "tabs.html#method-sendRequest",
+ "chrome.browserAction.setBadgeText": "browserAction.html#method-setBadgeText",
+ "chrome.browserAction.setIcon": "browserAction.html#method-setIcon",
+ "chrome.experimental.omnibox.onInputEntered": "experimental.omnibox.html#event-onInputEntered",
+ "chrome.browserAction.setPopup": "browserAction.html#method-setPopup",
+ "chrome.bookmarks.onChildrenReordered": "bookmarks.html#event-onChildrenReordered",
+ "chrome.experimental.webRequest.onRequestSent": "experimental.webRequest.html#event-onRequestSent",
+ "chrome.extension.getToolstrips": "extension.html#method-getToolstrips",
+ "chrome.history.onVisited": "history.html#event-onVisited",
+ "chrome.tabs.onUpdated": "tabs.html#event-onUpdated",
+ "chrome.history.deleteAll": "history.html#method-deleteAll",
+ "chrome.experimental.webNavigation.onDOMContentLoaded": "experimental.webNavigation.html#event-onDOMContentLoaded",
+ "chrome.tabs.getAllInWindow": "tabs.html#method-getAllInWindow",
+ "chrome.contextMenus.create": "contextMenus.html#method-create",
+ "chrome.tabs.getSelected": "tabs.html#method-getSelected",
+ "chrome.tabs.onAttached": "tabs.html#event-onAttached",
+ "chrome.tabs.remove": "tabs.html#method-remove",
+ "chrome.tabs.onDetached": "tabs.html#event-onDetached",
+ "chrome.extension.connect": "extension.html#method-connect",
+ "chrome.tabs.move": "tabs.html#method-move",
+ "chrome.windows.onFocusChanged": "windows.html#event-onFocusChanged",
+ "chrome.pageAction.setPopup": "pageAction.html#method-setPopup",
+ "chrome.history.addUrl": "history.html#method-addUrl"
+ },
+ "samples": [
+ {
+ "description": "",
+ "icon": null,
+ "name": "A browser action which changes its icon when clicked.",
+ "search_string": "A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/browserAction\/set_icon_path\/",
+ "api_calls": [
+ "chrome.browserAction.onClicked",
+ "chrome.browserAction.setIcon"
+ ],
+ "id": "121cca9e8942e456e3f25bbd16713b9bfe23e742",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "",
+ "icon": null,
+ "name": "A browser action with a popup that changes the page color.",
+ "search_string": "A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT",
+ "source_files": [
+ "manifest.json",
+ "popup.html"
+ ],
+ "path": "examples\/api\/browserAction\/set_page_color\/",
+ "api_calls": [
+ "chrome.tabs.executeScript"
+ ],
+ "id": "5da3e0ed090747eb6d5560e272c8bf17b7c0c2b6",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "browser_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "",
+ "icon": null,
+ "name": "A browser action with no icon that makes the page red",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/browserAction\/make_page_red\/",
+ "api_calls": [
+ "chrome.browserAction.onClicked",
+ "chrome.browserAction.setBadgeBackgroundColor",
+ "chrome.browserAction.setBadgeText",
+ "chrome.tabs.executeScript"
+ ],
+ "id": "c394974bd87e01605a3cca3cad8a7109de5bbda1",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Returns accept languages of the browser",
+ "icon": null,
+ "name": "AcceptLanguage",
+ "search_string": "ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE",
+ "source_files": [
+ "manifest.json",
+ "popup.html",
+ "_locales\/es\/messages.json",
+ "_locales\/sr\/messages.json",
+ "_locales\/en_US\/messages.json"
+ ],
+ "path": "examples\/api\/i18n\/getMessage\/",
+ "api_calls": [
+ "chrome.i18n.getAcceptLanguages",
+ "chrome.i18n.getMessage"
+ ],
+ "id": "c581cf06da17385735b64cc9077509ef13105518",
+ "protocols": [],
+ "features": [
+ "browser_action",
+ "popup"
+ ]
+ },
+ {
+ "description": "This extension adds an animated browser action to the toolbar.",
+ "icon": null,
+ "name": "Animated Page Action",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/pageAction\/set_icon\/",
+ "api_calls": [
+ "chrome.pageAction.hide",
+ "chrome.pageAction.onClicked",
+ "chrome.pageAction.setIcon",
+ "chrome.pageAction.setTitle",
+ "chrome.pageAction.show",
+ "chrome.tabs.get",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.onSelectionChanged"
+ ],
+ "id": "24d780762055a4f290ecb3ac69384fbaea3a7718",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "page_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "",
+ "icon": null,
+ "name": "Blank new tab page",
+ "search_string": "BLANK NEW TAB PAGE CHROME_URL_OVERRIDES",
+ "source_files": [
+ "manifest.json",
+ "blank.html"
+ ],
+ "path": "examples\/api\/override\/blank_ntp\/",
+ "api_calls": [],
+ "id": "7cdb5ad608e5c2f224e0db28990b760dfbba5672",
+ "protocols": [],
+ "features": [
+ "chrome_url_overrides"
+ ]
+ },
+ {
+ "description": "Enjoy a more magical and immersive experience when browsing the web using the power of sound.",
+ "icon": "icon.png",
+ "name": "Chrome Sounds",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "bg.html",
+ "options.html",
+ "bg.js",
+ "content.js"
+ ],
+ "path": "examples\/extensions\/fx\/",
+ "api_calls": [
+ "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"
+ ],
+ "id": "35911e7b2dc0145923ca43f499b5a61be52d30ec",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "bookmarks",
+ "options_page",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Displays the status of the Chromium buildbot in the toolbar. Click to see more detailed status in a popup.",
+ "icon": "icon.png",
+ "name": "Chromium Buildbot Monitor",
+ "search_string": "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 POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE",
+ "source_files": [
+ "manifest.json",
+ "bg.html",
+ "popup.html"
+ ],
+ "path": "examples\/extensions\/buildbot\/",
+ "api_calls": [
+ "chrome.browserAction.setBadgeBackgroundColor",
+ "chrome.browserAction.setBadgeText",
+ "chrome.browserAction.setTitle"
+ ],
+ "id": "a3089c96b34036b3a0431124c25badd7f1c3d64a",
+ "protocols": [
+ "http:\/\/",
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "popup"
+ ]
+ },
+ {
+ "description": "Add support to the omnibox to search the Chromium source code.",
+ "icon": null,
+ "name": "Chromium Search",
+ "search_string": "CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE EXPERIMENTAL TABS CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTCHANGED CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTENTERED CHROME.EXPERIMENTAL.OMNIBOX.STYLEMATCH CHROME.EXPERIMENTAL.OMNIBOX.STYLENONE CHROME.EXPERIMENTAL.OMNIBOX.STYLEURL CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/extensions\/chrome_search\/",
+ "api_calls": [
+ "chrome.experimental.omnibox.onInputChanged",
+ "chrome.experimental.omnibox.onInputEntered",
+ "chrome.experimental.omnibox.styleMatch",
+ "chrome.experimental.omnibox.styleNone",
+ "chrome.experimental.omnibox.styleUrl",
+ "chrome.tabs.get",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.update"
+ ],
+ "id": "7dd4735797cd957876becbdad0f4b0e47cf4ac01",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "experimental",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Displays the language of a tab",
+ "icon": null,
+ "name": "CLD",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/i18n\/cld\/",
+ "api_calls": [
+ "chrome.browserAction.setBadgeText",
+ "chrome.tabs.detectLanguage",
+ "chrome.tabs.get",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.onSelectionChanged",
+ "chrome.tabs.onUpdated"
+ ],
+ "id": "35c467a5623117e399afc1187bdcc25b1c74bc5d",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Shows some of the features of the Context Menus API",
+ "icon": null,
+ "name": "Context Menus Sample",
+ "search_string": "CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE",
+ "source_files": [
+ "sample.js",
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/contextMenus\/basic\/",
+ "api_calls": [
+ "chrome.contextMenus.create"
+ ],
+ "id": "16f1c9c9c20b78999b826f882c3d403d3c9f95ce",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "contextMenus"
+ ]
+ },
+ {
+ "description": "Testing Cookie API",
+ "icon": "cookie.png",
+ "name": "Cookie API Test Extension",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "background.html",
+ "manager.html"
+ ],
+ "path": "examples\/api\/cookies\/",
+ "api_calls": [
+ "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"
+ ],
+ "id": "17071198171ed3535a2ee9c129653378ad54b5ce",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "cookies",
+ "tabs"
+ ]
+ },
+ {
+ "description": "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.",
+ "icon": "sample-128.png",
+ "name": "Cross-domain XMLHttpRequest from a content script",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "contentscript.js",
+ "background.html"
+ ],
+ "path": "examples\/howto\/contentscript_xhr\/",
+ "api_calls": [
+ "chrome.extension.onRequest",
+ "chrome.extension.sendRequest"
+ ],
+ "id": "e6f9db199c82114ef857a140c81a9c7c41469333",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page"
+ ]
+ },
+ {
+ "description": "This extension adds an email button to the toolbar which allows you to email the page link using your default mail client or Gmail.",
+ "icon": "mail_128x128.png",
+ "name": "Email this page (by Google)",
+ "search_string": "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",
+ "source_files": [
+ "content_script.js",
+ "manifest.json",
+ "options.html",
+ "background.html"
+ ],
+ "path": "examples\/extensions\/email_this_page\/",
+ "api_calls": [
+ "chrome.browserAction.onClicked",
+ "chrome.extension.connect",
+ "chrome.extension.onConnect",
+ "chrome.tabs.create",
+ "chrome.tabs.executeScript",
+ "chrome.tabs.update"
+ ],
+ "id": "2fecb2a1bd23df9839021833e86c87b58e43d788",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "options_page",
+ "tabs"
+ ]
+ },
+ {
+ "description": "A sample extension which uses Google Analytics to track usage.",
+ "icon": "analytics-extension-icon-128.png",
+ "name": "Event Tracking with Google Analytics",
+ "search_string": "EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP",
+ "source_files": [
+ "manifest.json",
+ "analytics.js",
+ "popup.html",
+ "background.html"
+ ],
+ "path": "examples\/tutorials\/analytics\/",
+ "api_calls": [],
+ "id": "957d89c0464bcfad4b4755e8747cf9c4073d8289",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "browser_action",
+ "popup"
+ ]
+ },
+ {
+ "description": "Demonstrates how to use OAuth to connect the Google Documents List Data API.",
+ "icon": "img\/docs_spreadsheets-128.gif",
+ "name": "Google Document List Viewer",
+ "search_string": "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.ONUPDATED CHROME.TABS.REMOVE",
+ "source_files": [
+ "chrome_ex_oauthsimple.js",
+ "chrome_ex_oauth.js",
+ "chrome_ex_oauth.html",
+ "manifest.json",
+ "options.html",
+ "popup.html",
+ "background.html",
+ "js\/jquery-1.4.1.min.js"
+ ],
+ "path": "examples\/extensions\/gdocs\/",
+ "api_calls": [
+ "chrome.browserAction.setBadgeText",
+ "chrome.extension.getBackgroundPage",
+ "chrome.extension.getURL",
+ "chrome.tabs.create",
+ "chrome.tabs.onUpdated",
+ "chrome.tabs.remove"
+ ],
+ "id": "fad5d7059ba177d48e45d92e04da9e5ae4c2b8c2",
+ "protocols": [
+ "https:\/\/",
+ "https:\/\/",
+ "https:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "options_page",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Displays the number of unread messages in your Google Mail inbox. You can also click the button to open your inbox.",
+ "icon": "icon_128.png",
+ "name": "Google Mail Checker",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "options.html",
+ "background.html",
+ "_locales\/ro\/messages.json",
+ "_locales\/sl\/messages.json",
+ "_locales\/ar\/messages.json",
+ "_locales\/he\/messages.json",
+ "_locales\/es\/messages.json",
+ "_locales\/sr\/messages.json",
+ "_locales\/tr\/messages.json",
+ "_locales\/th\/messages.json",
+ "_locales\/en_GB\/messages.json",
+ "_locales\/zh_CN\/messages.json",
+ "_locales\/cs\/messages.json",
+ "_locales\/fr\/messages.json",
+ "_locales\/bg\/messages.json",
+ "_locales\/pt_BR\/messages.json",
+ "_locales\/nl\/messages.json",
+ "_locales\/lt\/messages.json",
+ "_locales\/ja\/messages.json",
+ "_locales\/pl\/messages.json",
+ "_locales\/hu\/messages.json",
+ "_locales\/pt_PT\/messages.json",
+ "_locales\/de\/messages.json",
+ "_locales\/fil\/messages.json",
+ "_locales\/sv\/messages.json",
+ "_locales\/it\/messages.json",
+ "_locales\/el\/messages.json",
+ "_locales\/uk\/messages.json",
+ "_locales\/fi\/messages.json",
+ "_locales\/hr\/messages.json",
+ "_locales\/vi\/messages.json",
+ "_locales\/sk\/messages.json",
+ "_locales\/nb\/messages.json",
+ "_locales\/da\/messages.json",
+ "_locales\/es_419\/messages.json",
+ "_locales\/ca\/messages.json",
+ "_locales\/zh_TW\/messages.json",
+ "_locales\/hi\/messages.json",
+ "_locales\/et\/messages.json",
+ "_locales\/id\/messages.json",
+ "_locales\/lv\/messages.json",
+ "_locales\/ru\/messages.json",
+ "_locales\/ko\/messages.json",
+ "_locales\/en\/messages.json"
+ ],
+ "path": "examples\/extensions\/gmail\/",
+ "api_calls": [
+ "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"
+ ],
+ "id": "2e0d2082771d5e26be91efaeae390874e738239b",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "options_page",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Find out when you have new waves and preview them fast.",
+ "icon": "128.png",
+ "name": "Google Wave Notifier",
+ "search_string": "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",
+ "source_files": [
+ "chrome_ex_oauthsimple.js",
+ "chrome_ex_oauth.js",
+ "chrome_ex_oauth.html",
+ "prettyload.js",
+ "manifest.json",
+ "options.html",
+ "popup.html",
+ "background.html"
+ ],
+ "path": "examples\/extensions\/wave\/",
+ "api_calls": [
+ "chrome.extension.getBackgroundPage",
+ "chrome.extension.getURL",
+ "chrome.tabs.create",
+ "chrome.tabs.get",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.onUpdated",
+ "chrome.tabs.remove"
+ ],
+ "id": "ceb116611b727f6c2ad560098bb9c3c4a4d830f9",
+ "protocols": [
+ "https:\/\/",
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "options_page",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "The first extension that I made.",
+ "icon": null,
+ "name": "Hello World",
+ "search_string": "HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP",
+ "source_files": [
+ "manifest.json",
+ "popup.html"
+ ],
+ "path": "examples\/tutorials\/getstarted\/",
+ "api_calls": [],
+ "id": "e3bd4e4ff791ae63a16f16072252be4a7fccf43e",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "browser_action",
+ "popup"
+ ]
+ },
+ {
+ "description": "",
+ "icon": null,
+ "name": "iGoogle new tab page",
+ "search_string": "IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES",
+ "source_files": [
+ "manifest.json",
+ "redirect.html"
+ ],
+ "path": "examples\/api\/override\/override_igoogle\/",
+ "api_calls": [],
+ "id": "4663a9d47c09f43a46fadb09965d97ac4bb09d40",
+ "protocols": [],
+ "features": [
+ "chrome_url_overrides"
+ ]
+ },
+ {
+ "description": "Finds addresses in the web page you're on and pops up a map window.",
+ "icon": "icon.png",
+ "name": "Mappy",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "mappy_content_script.js",
+ "popup.html",
+ "background.html"
+ ],
+ "path": "examples\/extensions\/mappy\/",
+ "api_calls": [
+ "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"
+ ],
+ "id": "be628092c6fd9d39a82a52ad443c4a9cb09e031b",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "page_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Merges all of the browser's windows into the current window",
+ "icon": "merge_windows_128.png",
+ "name": "Merge Windows",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/windows\/merge_windows\/",
+ "api_calls": [
+ "chrome.browserAction.onClicked",
+ "chrome.tabs.get",
+ "chrome.tabs.getAllInWindow",
+ "chrome.tabs.move",
+ "chrome.windows.get",
+ "chrome.windows.getAll",
+ "chrome.windows.getCurrent"
+ ],
+ "id": "572f82c2738f6c9a1911778e4d41f712b03c25bc",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Times how long it takes to send a message to a content script and back.",
+ "icon": null,
+ "name": "Message Timer",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "page.js",
+ "popup.html"
+ ],
+ "path": "examples\/api\/messaging\/timer\/",
+ "api_calls": [
+ "chrome.extension.onConnect",
+ "chrome.extension.onRequest",
+ "chrome.tabs.connect",
+ "chrome.tabs.get",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.sendRequest"
+ ],
+ "id": "282fc112fa63a680c0cbc90dc0463e3780c46d46",
+ "protocols": [],
+ "features": [
+ "browser_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "A browser action with a popup dump of all bookmarks, including search, add, edit and delete.",
+ "icon": null,
+ "name": "My Bookmarks",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "popup.html"
+ ],
+ "path": "examples\/api\/bookmarks\/basic\/",
+ "api_calls": [
+ "chrome.bookmarks.create",
+ "chrome.bookmarks.get",
+ "chrome.bookmarks.getTree",
+ "chrome.bookmarks.remove",
+ "chrome.bookmarks.update",
+ "chrome.tabs.create"
+ ],
+ "id": "d3f041b48f31db1a86dfe05b6740086554ebba31",
+ "protocols": [],
+ "features": [
+ "bookmarks",
+ "browser_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Displays the first 5 items from the 'Google News - top news' RSS feed in a popup.",
+ "icon": "news_icon.png",
+ "name": "News Reader",
+ "search_string": "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",
+ "source_files": [
+ "feed.html",
+ "manifest.json"
+ ],
+ "path": "examples\/extensions\/news_a11y\/",
+ "api_calls": [
+ "chrome.tabs.create"
+ ],
+ "id": "a772f968a7e977f8bbf9d74f43c6daca57067d1e",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "browser_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Displays the first 5 items from the 'Google News - top news' RSS feed in a popup.",
+ "icon": "news_icon.png",
+ "name": "News Reader",
+ "search_string": "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",
+ "source_files": [
+ "feed.html",
+ "manifest.json"
+ ],
+ "path": "examples\/extensions\/news\/",
+ "api_calls": [
+ "chrome.tabs.create"
+ ],
+ "id": "fc80727c5f0bd5ba6cad74e9ec2519cbfc34cdd3",
+ "protocols": [
+ "http:\/\/"
+ ],
+ "features": [
+ "browser_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Displays the first 5 items from the 'Google News - top news' RSS feed in a popup.",
+ "icon": "news_icon.png",
+ "name": "News Reader",
+ "search_string": "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",
+ "source_files": [
+ "feed.html",
+ "manifest.json",
+ "_locales\/es\/messages.json",
+ "_locales\/sr\/messages.json",
+ "_locales\/en\/messages.json"
+ ],
+ "path": "examples\/extensions\/news_i18n\/",
+ "api_calls": [
+ "chrome.i18n.getMessage",
+ "chrome.tabs.create"
+ ],
+ "id": "e432a5c78298458aaa0f9c1c5b3fb010ffc2ed99",
+ "protocols": [
+ "http:\/\/",
+ "http:\/\/"
+ ],
+ "features": [
+ "browser_action",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Shows off desktop notifications, which are \"toast\" windows that pop up on the desktop.",
+ "icon": "128.png",
+ "name": "Notification Demo",
+ "search_string": "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",
+ "source_files": [
+ "error.html",
+ "manifest.json",
+ "options.html",
+ "background.html"
+ ],
+ "path": "examples\/api\/notifications\/",
+ "api_calls": [
+ "chrome.tabs.create"
+ ],
+ "id": "5ffc8fd27bfc21f5205c8c5fe8290222c95a7eb4",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "notifications",
+ "options_page",
+ "tabs"
+ ]
+ },
+ {
+ "description": "",
+ "icon": null,
+ "name": "Omnibox Example",
+ "search_string": "OMNIBOX EXAMPLE BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTCHANGED CHROME.EXPERIMENTAL.OMNIBOX.ONINPUTENTERED",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/omnibox\/",
+ "api_calls": [
+ "chrome.experimental.omnibox.onInputChanged",
+ "chrome.experimental.omnibox.onInputEntered"
+ ],
+ "id": "e22a739b78a7e5580d9318662390a79033f96d81",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "experimental"
+ ]
+ },
+ {
+ "description": "Shows a page action for HTML pages containing the word 'sandwich'",
+ "icon": "sandwich-128.png",
+ "name": "Page action by content",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "contentscript.js",
+ "background.html"
+ ],
+ "path": "examples\/api\/pageAction\/pageaction_by_content\/",
+ "api_calls": [
+ "chrome.extension.onRequest",
+ "chrome.extension.sendRequest",
+ "chrome.pageAction.show"
+ ],
+ "id": "24fb45f3b2192c163afb2399c3bdad91d837643e",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "page_action"
+ ]
+ },
+ {
+ "description": "Shows a page action for urls which have the letter 'g' in them.",
+ "icon": "icon-128.png",
+ "name": "Page action by URL",
+ "search_string": "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",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/pageAction\/pageaction_by_url\/",
+ "api_calls": [
+ "chrome.pageAction.show",
+ "chrome.tabs.onUpdated"
+ ],
+ "id": "b42764aa301c7c340c9febcd492da962a453c8b6",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "page_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Chromium Page Benchmarker.",
+ "icon": null,
+ "name": "Page Benchmarker",
+ "search_string": "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.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT",
+ "source_files": [
+ "script.js",
+ "manifest.json",
+ "options.html",
+ "background.html",
+ "jst\/jstemplate.js",
+ "jst\/util.js",
+ "jst\/jsevalcontext.js",
+ "jst\/jstemplate_test.js"
+ ],
+ "path": "examples\/extensions\/benchmark\/",
+ "api_calls": [
+ "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.get",
+ "chrome.tabs.getAllInWindow",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.remove",
+ "chrome.tabs.update",
+ "chrome.windows.get",
+ "chrome.windows.getCurrent"
+ ],
+ "id": "75e2de40348b5647d77b5f9c8dbdc43b868e87c8",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "browser_action",
+ "options_page",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Adds a print button to the browser.",
+ "icon": null,
+ "name": "Print this page",
+ "search_string": "PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE",
+ "source_files": [
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/browserAction\/print\/",
+ "api_calls": [
+ "chrome.browserAction.onClicked",
+ "chrome.tabs.update"
+ ],
+ "id": "1ec0e2f3c645541d12dd49aa5ed6533f1203db58",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Uses OAuth to connect to Google's contacts service and display a list of your contacts.",
+ "icon": "img\/icon-128.png",
+ "name": "Sample - OAuth Contacts",
+ "search_string": "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",
+ "source_files": [
+ "chrome_ex_oauthsimple.js",
+ "chrome_ex_oauth.js",
+ "chrome_ex_oauth.html",
+ "manifest.json",
+ "contacts.html",
+ "background.html"
+ ],
+ "path": "examples\/extensions\/oauth_contacts\/",
+ "api_calls": [
+ "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"
+ ],
+ "id": "5d2f97358bcef171b2b012159836781a7b0ae813",
+ "protocols": [
+ "http:\/\/",
+ "https:\/\/",
+ "https:\/\/",
+ "https:\/\/"
+ ],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Adds a browser action showing which tabs share the current tab's process.",
+ "icon": null,
+ "name": "Show Tabs in Process",
+ "search_string": "SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE",
+ "source_files": [
+ "manifest.json",
+ "popup.html"
+ ],
+ "path": "examples\/api\/processes\/show_tabs\/",
+ "api_calls": [
+ "chrome.experimental.processes.getProcessForTab",
+ "chrome.tabs.get",
+ "chrome.tabs.getSelected",
+ "chrome.tabs.update",
+ "chrome.windows.get",
+ "chrome.windows.getAll",
+ "chrome.windows.getCurrent",
+ "chrome.windows.update"
+ ],
+ "id": "47ff142798c27febf4a2ada551c671feec26605c",
+ "protocols": [],
+ "features": [
+ "browser_action",
+ "experimental",
+ "popup",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Utility for working with the extension tabs api",
+ "icon": null,
+ "name": "Tab Inspector",
+ "search_string": "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",
+ "source_files": [
+ "jstemplate_compiled.js",
+ "tabs_api.html",
+ "manifest.json",
+ "background.html"
+ ],
+ "path": "examples\/api\/tabs\/inspector\/",
+ "api_calls": [
+ "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"
+ ],
+ "id": "39dcafbdebb05e43acd35b5db14f360bc023a8b5",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Demonstrate screenshot functionality in the chrome.tabs api.",
+ "icon": null,
+ "name": "Test Screenshot Extension",
+ "search_string": "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",
+ "source_files": [
+ "screenshot.js",
+ "manifest.json",
+ "background.html",
+ "screenshot.html"
+ ],
+ "path": "examples\/api\/tabs\/screenshot\/",
+ "api_calls": [
+ "chrome.browserAction.onClicked",
+ "chrome.extension.getURL",
+ "chrome.extension.getViews",
+ "chrome.tabs.captureVisibleTab",
+ "chrome.tabs.create",
+ "chrome.tabs.onUpdated"
+ ],
+ "id": "b01d58ed12efa2a6b9ca152e19d15730cf1d84be",
+ "protocols": [],
+ "features": [
+ "background_page",
+ "browser_action",
+ "tabs"
+ ]
+ },
+ {
+ "description": "Reads your history, and shows the top ten pages you go to by typing the URL.",
+ "icon": null,
+ "name": "Typed URL History",
+ "search_string": "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",
+ "source_files": [
+ "typedUrls.js",
+ "typedUrls.html",
+ "manifest.json"
+ ],
+ "path": "examples\/api\/history\/showHistory\/",
+ "api_calls": [
+ "chrome.history.getVisits",
+ "chrome.history.search",
+ "chrome.tabs.create"
+ ],
+ "id": "99d24fe7b088c2380e0a158d70e9e5ae6c951165",
+ "protocols": [],
+ "features": [
+ "browser_action",
+ "history",
+ "tabs"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/chrome/common/extensions/docs/static/samples.html b/chrome/common/extensions/docs/static/samples.html
index 5057321..185839b 100644
--- a/chrome/common/extensions/docs/static/samples.html
+++ b/chrome/common/extensions/docs/static/samples.html
@@ -1,145 +1,115 @@
-<style>
-a img {
- border:0;
-}
-</style>
-
-<div id="pageData-showTOC" class="pageData">true</div>
-
-<p>
-This page shows some sample extensions,
-with links that let you install them
-and find their source code.
-Each sample also has links to the documentation
-for each feature used by the sample.
-</p>
-
-<p><b>Note:</b> To run these samples on Linux or Mac,
-you need to get on an early access release channel of Google Chrome.
-</p>
-
-<ul>
- <li> <b>Windows</b>: Use any release of Google Chrome</li>
- <li> <b>Linux</b>: Subscribe to the <a href="http://www.google.com/landing/chrome/beta/">Beta channel</a> </li>
- <li> <b>Mac</b>: Subscribe to the <a href="http://www.chromium.org/getting-involved/dev-channel#TOC-Mac">Dev channel</a> </li>
-</ul>
-
-<p>
-For more example code, see the
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/" target="_blank">Chromium examples directory</a>.
-For tips on using the code viewer, see
-<a href="#viewsource">How to view the source code</a>.
-</p>
-
-<h2 id="featured">Sample extensions</h2>
-
-<h3 id="gmail">Google Mail Checker</h3>
-
-<p>Adds a Google Mail button to the toolbar, displaying the number of unread messages in your inbox. Click the button to open your inbox.
-
-<p>Included with no charge is a swell animation when the number of unread items changes.
-
-<p><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dmihcahmgecmbnbcchbopgniflfhgnkff%26uc%26lang%3Den-US"><img src="images/google-mail-checker-capture.png" width="243" height="170" style="margin-bottom:0.5em"></a><br>
-<b><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dmihcahmgecmbnbcchbopgniflfhgnkff%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">Source code</a></b>
-
-<br><br>
-<p>Features used:
-
-<ul>
- <li><a href="browserAction.html">Browser action</a> (with canvas-based animation)
- <li><a href="browserAction.html#badge">Badge</a>
- <li><a href="background_pages.html">Background page</a>
- <li><a href="xhr.html">Cross-origin XMLHttpRequest</a>
- <li><a href="tabs.html">Tabs</a> module
-</ul>
-
-<br>
-
-<h3 id="subscribe_page_action">Subscribe in Feed Reader</h3>
-
-<p>Adds a small icon to the address bar when a web page contains a feed that can be subscribed to. When you click the icon, you'll see a preview of the feed and have the option to subscribe with the web-based reader of your choice.
-
-<p><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dnlbjncdgjeocebhnmkbbbdekmmmcbfjd%26uc%26lang%3Den-US"><img src="images/subscribe-cap1.png" style="margin-bottom:0.5em" width="342" height="165"></a>
-
-<p><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dnlbjncdgjeocebhnmkbbbdekmmmcbfjd%26uc%26lang%3Den-US"><img src="images/subscribe-cap2.png" style="margin-bottom:0.5em" width="566" height="327"></a><br>
-<b><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dnlbjncdgjeocebhnmkbbbdekmmmcbfjd%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/subscribe_page_action/">Source code</a></b>
-
-<br><br>
-<p>Features used:
-
-<ul>
- <li><a href="pageAction.html">Page action</a>
- <li><a href="background_pages.html">Background page</a>
- <li><a href="content_scripts.html">Content scripts</a>
- <li><a href="messaging.html">Message passing</a>
- <li><a href="xhr.html">Cross-origin XMLHttpRequest</a>
-</ul>
-
-<br>
-
-<h3 id="news">News Reader</h3>
-
-<p>Uses a popup to display the first 5 items from the "Google News - top news" RSS feed. The popup dynamically resizes itself to fit additional content.
-
-<p><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dmmdhomleggalggemanamhjdhafaabfdi%26uc%26lang%3Den-US"><img src="images/news.gif" style="margin-bottom:0.5em" width="475" height="346"></a><br>
-
-<b><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dmmdhomleggalggemanamhjdhafaabfdi%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">Source code</a></b>
-
-<br><br>
-<p>Features used:
-
-<ul>
- <li><a href="browserAction.html">Browser action</a>
- <li><a href="xhr.html">Cross-origin XMLHttpRequest</a>
-</ul>
-
-<br>
-<h2 id="otherExtensions">Other sample extensions</h2>
-<p>These samples use similar capabilities to the ones above, but to implement different features.</p>
-<dl>
- <dt>Chromium buildbot monitor</dt>
- <dd>Monitors the Chromium tree status <br />
- <b><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dafmppjmdopaajlhgcddfhfhfgincjeih%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">Source code</a></b>
- </dd>
-
- <dt>Mappy</dt>
- <dd>Lets you bring up a map for the first address on any web page <br />
- <b><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dobjeacibkcphiplbghlbmlbnihbbmfjl%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/">Source code</a></b>
- </dd>
-
- <dt>Email this page</dt>
- <dd>Lets you share the current web page by sending it in an email <br />
- <b><a href="https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Ddbeoemfhkdniadbojeencpkgmobndpai%26uc%26lang%3Den-US">Install</a>&nbsp;&nbsp;&nbsp;<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/">Source code</a></b>
- </dd>
-</dl>
-
-
-<h2 id="viewsource">How to view the source code</h2>
-
-<p>
-The source code links in this page take you to a directory
-(for example,
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">examples/extensions/gmail</a>)
-that lists all the files in an extension.
-To view a file,
-first click its filename.
-If the page that comes up has an <b>as text</b> link,
-click that link to view the page's source code.
-</p>
-
-<p>
-To download the file,
-right-click the <b>download</b> link.
-You can also left-click the <b>download</b> link
-to view the source code for files such as
-<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/manifest.json">manifest.json</a>
-that have no <b>as text</b> link.
-</p>
-
-<p>
-We're working on a way to make it easier to look at the sample source code.
-If you'd like to track our progress,
-put a star by bug <a href="http://code.google.com/p/chromium/issues/detail?id=25247">25247</a>.
-</p>
+<link rel="stylesheet" href="css/samples.css" />
+<script jscontent="search_data"></script>
+<script src="js/sample_search.js"></script>
+<script src="js/samples.js"></script>
+
+<script type="text/prerenderjs">
+ /**
+ * The following code is executed before the jstemplate in this file is
+ * rendered, meaning it can modify template data by changing the pageData
+ * window variable. See api_page_generator.js for more information.
+ *
+ * Adds the samples manifest data + API modules.
+ */
+ pageData.samples = samples;
+ pageData.api_mapping = apiMapping;
+ pageData.api_modules = [];
+ schema.forEach(function(mod) {
+ if (mod.nodoc) {
+ return;
+ }
+ if (mod.namespace.indexOf('experimental') != -1) {
+ return;
+ }
+ pageData.api_modules.push('chrome.' + mod.namespace);
+ });
+ pageData.api_modules.push('chrome.experimental');
+ pageData.api_modules.sort();
+
+ var search_data = {};
+ samples.forEach(function(sample) {
+ search_data[sample.id] = sample.search_string;
+
+ // Change the API calls data to be a mapping of calls to URLs for
+ // simpler template rendering.
+ var api_calls = sample.api_calls.slice();
+ sample.api_calls = [];
+ api_calls.sort();
+ for (var i = 0; i < api_calls.length; i++) {
+ sample.api_calls.push({
+ 'call': api_calls[i],
+ 'url': apiMapping[api_calls[i]]
+ });
+ }
+
+ // Change the sample files list to be a mapping of relative paths to URLs
+ // for simpler template rendering.
+ var source_files = sample.source_files.slice();
+ sample.source_files = [];
+ source_files.sort();
+ for (var i = 0; i < source_files.length; i++) {
+ sample.source_files.push({
+ 'file': source_files[i],
+ 'url': 'http://src.chromium.org/viewvc/chrome/trunk' +
+ '/src/chrome/common/extensions/docs/' + sample.path +
+ source_files[i] + '?content-type=text/plain'
+ });
+ }
+ });
+
+ // The search data should be injected as executable JavaScript, so assign
+ // a template value which will store the data as a page global.
+ pageData.search_data = "var search_data = " +
+ JSON.stringify(search_data); + ";";
+</script>
+
+<div id="controls">
+ <div id="searchbox" class="controlbox">
+ <strong>Filter by keyword:</strong>
+ <input autofocus type="search" type="text" id="searchinput" placeholder="Type to search" onkeyup="filterSamples();" />
+ <a id="clearlink" href="javascript:void(0);" onclick="clearFilter();" style="display: none;">clear</a>
+ </div>
+
+ <div id="filterbox" class="controlbox">
+ <strong>Filter by API:</strong>
+ <span jseval="$total=api_modules.length">
+ <span jsselect="api_modules" >
+ <a href="javascript:void(0);" jsvalues="onclick:'setFilter(\'' + $this + '\', this)'" jscontent="$this"></a><span jsdisplay="$index != $total - 1">, </span>
+ </span>
+ </span>
+ </div>
+</div>
+
+<div jsselect="samples" jsvalues="id:id" class="sample">
+ <img jsdisplay="icon != null" class="icon" jsvalues="src:path + icon" />
+ <img jsdisplay="icon == null" class="icon" src="images/sample-default-icon.png" />
+ <h2 class="name">
+ <a jscontent="name" jsvalues="href:'http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/' + path" target="_blank"></a>
+ </h2>
+ <p jsdisplay="features.length > 0" class="metadata features" jseval="$total=features.length">Uses
+ <span jsselect="features">
+ <strong jscontent="$this"></strong><span jsdisplay="$index < $total - 2 && $total > 2">, </span>
+ <span jsdisplay="$index == $total - 2 && $total > 1" > and</span>
+ </span>
+ </p>
+ <p jscontent="description"></p>
+ <div jsdisplay="api_calls.length > 0" class="apicalls"><strong>Calls:</strong>
+ <ul>
+ <li jsselect="api_calls">
+ <code><a jsvalues="href:$this.url" jscontent="$this.call"></a></code>
+ </li>
+ </ul>
+ </div>
+ <div jsdisplay="source_files.length > 0" class="sourcefiles"><strong>Source files:</strong>
+ <ul>
+ <li jsselect="source_files">
+ <code><a jsvalues="href:$this.url" jscontent="$this.file" target="_blank"></a></code>
+ </li>
+ </ul>
+ </div>
+</div>
+
+<div id="noresults" style="display:none">
+ Sorry, no results were found.
+</div>