diff options
author | kurrik@chromium.org <kurrik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-05 19:49:36 +0000 |
---|---|---|
committer | kurrik@chromium.org <kurrik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-05 19:49:36 +0000 |
commit | 389509acdf508b1b4014406f55261ee8cbac4b3e (patch) | |
tree | ab4e79348aed11d81788ea3356dc22a507c38cee /chrome/common | |
parent | d50c2c4917a34d27e2bda8eeb47a185a9bcf3ed3 (diff) | |
download | chromium_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-x | chrome/common/extensions/docs/build/build.py | 39 | ||||
-rw-r--r-- | chrome/common/extensions/docs/build/directory.py | 552 | ||||
-rw-r--r-- | chrome/common/extensions/docs/css/samples.css | 99 | ||||
-rw-r--r-- | chrome/common/extensions/docs/examples/extensions/maps_app/manifest.json | 2 | ||||
-rw-r--r-- | chrome/common/extensions/docs/images/sample-default-icon.png | bin | 0 -> 5321 bytes | |||
-rw-r--r-- | chrome/common/extensions/docs/js/api_page_generator.js | 82 | ||||
-rw-r--r-- | chrome/common/extensions/docs/js/sample_search.js | 82 | ||||
-rw-r--r-- | chrome/common/extensions/docs/samples.html | 2084 | ||||
-rw-r--r-- | chrome/common/extensions/docs/samples.json | 1237 | ||||
-rw-r--r-- | chrome/common/extensions/docs/static/samples.html | 258 |
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 Binary files differnew file mode 100644 index 0000000..8359c14 --- /dev/null +++ b/chrome/common/extensions/docs/images/sample-default-icon.png 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&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> -<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&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&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> <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&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> <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&x=id%3Dafmppjmdopaajlhgcddfhfhfgincjeih%26uc%26lang%3Den-US">Install</a> <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> <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> <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> -<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> <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> <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> <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> <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> <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> |