diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-30 22:31:51 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-30 22:31:51 +0000 |
commit | 4875ba17099e50f482ec826fc38e7922096b7be2 (patch) | |
tree | 7bb5ec4498187f7c9673ada84c54aca1c0cdd6e5 | |
parent | b04f6c6aea3ffd3a03368b67abacc1f36d2f8ce8 (diff) | |
download | chromium_src-4875ba17099e50f482ec826fc38e7922096b7be2.zip chromium_src-4875ba17099e50f482ec826fc38e7922096b7be2.tar.gz chromium_src-4875ba17099e50f482ec826fc38e7922096b7be2.tar.bz2 |
Add request_id to HttpRequestInfo and pass it to the NetworkDelegate for events.
This lets us look up the request associated with an http transaction and
send event details for the webRequest.onBeforeRequest extension event.
I also hooked up the onBeforeRequest event for HTTP network and cache transactions so that they are separate from other requests. This lets us have the request header information.
BUG=60101
TEST=no
Review URL: http://codereview.chromium.org/6698009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79905 0039d316-1c4b-4281-b951-d872f2087c98
25 files changed, 1170 insertions, 624 deletions
diff --git a/chrome/browser/extensions/extension_webrequest_api.cc b/chrome/browser/extensions/extension_webrequest_api.cc index 5459a2a..fbc0402 100644 --- a/chrome/browser/extensions/extension_webrequest_api.cc +++ b/chrome/browser/extensions/extension_webrequest_api.cc @@ -17,6 +17,7 @@ #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_extent.h" #include "chrome/common/extensions/url_pattern.h" +#include "chrome/common/url_constants.h" #include "content/browser/browser_thread.h" #include "content/browser/renderer_host/resource_dispatcher_host.h" #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" @@ -29,9 +30,10 @@ namespace keys = extension_webrequest_api_constants; namespace { // List of all the webRequest events. -static const char *kWebRequestEvents[] = { +static const char* const kWebRequestEvents[] = { keys::kOnBeforeRedirect, keys::kOnBeforeRequest, + keys::kOnBeforeSendHeaders, keys::kOnCompleted, keys::kOnErrorOccurred, keys::kOnHeadersReceived, @@ -155,7 +157,7 @@ struct ExtensionWebRequestEventRouter::ExtraInfoSpec { RESPONSE_HEADERS = 1<<3, REDIRECT_REQUEST_LINE = 1<<4, REDIRECT_REQUEST_HEADERS = 1<<5, - BLOCKING = 1<<5, + BLOCKING = 1<<6, }; static bool InitFromValue(const ListValue& value, int* extra_info_spec); @@ -280,14 +282,14 @@ ExtensionWebRequestEventRouter::ExtensionWebRequestEventRouter() { ExtensionWebRequestEventRouter::~ExtensionWebRequestEventRouter() { } -bool ExtensionWebRequestEventRouter::OnBeforeRequest( +int ExtensionWebRequestEventRouter::OnBeforeRequest( ProfileId profile_id, ExtensionEventRouterForwarder* event_router, net::URLRequest* request, net::CompletionCallback* callback) { // TODO(jochen): Figure out what to do with events from the system context. if (profile_id == Profile::kInvalidProfileId) - return false; + return net::OK; int tab_id = -1; int window_id = -1; @@ -298,7 +300,14 @@ bool ExtensionWebRequestEventRouter::OnBeforeRequest( GetMatchingListeners(profile_id, keys::kOnBeforeRequest, request->url(), tab_id, window_id, resource_type); if (listeners.empty()) - return false; + return net::OK; + + // If this is an HTTP request, keep track of it. HTTP-specific events only + // have the request ID, so we'll need to look up the URLRequest from that. + if (request->url().SchemeIs(chrome::kHttpScheme) || + request->url().SchemeIs(chrome::kHttpsScheme)) { + http_requests_[request->identifier()] = request; + } ListValue args; DictionaryValue* dict = new DictionaryValue(); @@ -310,18 +319,72 @@ bool ExtensionWebRequestEventRouter::OnBeforeRequest( dict->SetString(keys::kTypeKey, ResourceTypeToString(resource_type)); args.Append(dict); + if (DispatchEvent(profile_id, event_router, request, callback, listeners, + args)) + return net::ERR_IO_PENDING; + return net::OK; +} + +int ExtensionWebRequestEventRouter::OnBeforeSendHeaders( + ProfileId profile_id, + ExtensionEventRouterForwarder* event_router, + uint64 request_id, + net::HttpRequestHeaders* headers, + net::CompletionCallback* callback) { + // TODO(jochen): Figure out what to do with events from the system context. + if (profile_id == Profile::kInvalidProfileId) + return net::OK; + + HttpRequestMap::iterator iter = http_requests_.find(request_id); + if (iter == http_requests_.end()) + return net::OK; + + net::URLRequest* request = iter->second; + http_requests_.erase(iter); + + std::vector<const EventListener*> listeners = + GetMatchingListeners(profile_id, keys::kOnBeforeSendHeaders, request); + if (listeners.empty()) + return net::OK; + + ListValue args; + DictionaryValue* dict = new DictionaryValue(); + dict->SetString(keys::kRequestIdKey, + base::Uint64ToString(request->identifier())); + dict->SetString(keys::kUrlKey, request->url().spec()); + // TODO(mpcomplete): request headers. + args.Append(dict); + + if (DispatchEvent(profile_id, event_router, request, callback, listeners, + args)) + return net::ERR_IO_PENDING; + return net::OK; +} + +void ExtensionWebRequestEventRouter::OnURLRequestDestroyed( + ProfileId profile_id, net::URLRequest* request) { + http_requests_.erase(request->identifier()); +} + +bool ExtensionWebRequestEventRouter::DispatchEvent( + ProfileId profile_id, + ExtensionEventRouterForwarder* event_router, + net::URLRequest* request, + net::CompletionCallback* callback, + const std::vector<const EventListener*>& listeners, + const ListValue& args) { std::string json_args; base::JSONWriter::Write(&args, false, &json_args); // TODO(mpcomplete): Consider consolidating common (extension_id,json_args) // pairs into a single message sent to a list of sub_event_names. int num_handlers_blocking = 0; - for (std::vector<const EventListener*>::iterator it = listeners.begin(); + for (std::vector<const EventListener*>::const_iterator it = listeners.begin(); it != listeners.end(); ++it) { event_router->DispatchEventToExtension( (*it)->extension_id, (*it)->sub_event_name, json_args, profile_id, true, GURL()); - if ((*it)->extra_info_spec & ExtraInfoSpec::BLOCKING) { + if (callback && (*it)->extra_info_spec & ExtraInfoSpec::BLOCKING) { (*it)->blocked_requests.insert(request->identifier()); ++num_handlers_blocking; } @@ -442,6 +505,20 @@ ExtensionWebRequestEventRouter::GetMatchingListeners( return matching_listeners; } +std::vector<const ExtensionWebRequestEventRouter::EventListener*> +ExtensionWebRequestEventRouter::GetMatchingListeners( + ProfileId profile_id, + const std::string& event_name, + net::URLRequest* request) { + int tab_id = -1; + int window_id = -1; + ResourceType::Type resource_type = ResourceType::LAST_TYPE; + ExtractRequestInfo(request, &tab_id, &window_id, &resource_type); + + return GetMatchingListeners( + profile_id, event_name, request->url(), tab_id, window_id, resource_type); +} + void ExtensionWebRequestEventRouter::DecrementBlockCount(uint64 request_id, bool cancel) { // It's possible that this request was already cancelled by a previous event diff --git a/chrome/browser/extensions/extension_webrequest_api.h b/chrome/browser/extensions/extension_webrequest_api.h index 32a9317..174ac32 100644 --- a/chrome/browser/extensions/extension_webrequest_api.h +++ b/chrome/browser/extensions/extension_webrequest_api.h @@ -22,6 +22,7 @@ class ExtensionEventRouterForwarder; class GURL; namespace net { +class HttpRequestHeaders; class URLRequest; } @@ -36,11 +37,24 @@ class ExtensionWebRequestEventRouter { static ExtensionWebRequestEventRouter* GetInstance(); // Dispatches the OnBeforeRequest event to any extensions whose filters match - // the given request. Returns true if an extension wants to pause the request. - bool OnBeforeRequest(ProfileId profile_id, - ExtensionEventRouterForwarder* event_router, - net::URLRequest* request, - net::CompletionCallback* callback); + // the given request. Returns net::ERR_IO_PENDING if an extension is + // intercepting the request, OK otherwise. + int OnBeforeRequest(ProfileId profile_id, + ExtensionEventRouterForwarder* event_router, + net::URLRequest* request, + net::CompletionCallback* callback); + + // Dispatches the onBeforeSendHeaders event. This is fired for HTTP(s) + // requests only, and allows modification of the outgoing request headers. + // Returns net::ERR_IO_PENDING if an extension is intercepting the request, OK + // otherwise. + int OnBeforeSendHeaders(ProfileId profile_id, + ExtensionEventRouterForwarder* event_router, + uint64 request_id, + net::HttpRequestHeaders* headers, + net::CompletionCallback* callback); + + void OnURLRequestDestroyed(ProfileId profile_id, net::URLRequest* request); // Called when an event listener handles a blocking event and responds. // TODO(mpcomplete): modify request @@ -77,10 +91,19 @@ class ExtensionWebRequestEventRouter { typedef std::map<std::string, std::set<EventListener> > ListenerMapForProfile; typedef std::map<ProfileId, ListenerMapForProfile> ListenerMap; typedef std::map<uint64, BlockedRequest> BlockedRequestMap; + typedef std::map<uint64, net::URLRequest*> HttpRequestMap; ExtensionWebRequestEventRouter(); ~ExtensionWebRequestEventRouter(); + bool DispatchEvent( + ProfileId profile_id, + ExtensionEventRouterForwarder* event_router, + net::URLRequest* request, + net::CompletionCallback* callback, + const std::vector<const EventListener*>& listeners, + const ListValue& args); + // Returns a list of event listeners that care about the given event, based // on their filter parameters. std::vector<const EventListener*> GetMatchingListeners( @@ -91,11 +114,18 @@ class ExtensionWebRequestEventRouter { int window_id, ResourceType::Type resource_type); + // Same as above, but retrieves the filter parameters from the request. + std::vector<const EventListener*> GetMatchingListeners( + ProfileId profile_id, + const std::string& event_name, + net::URLRequest* request); // Decrements the count of event handlers blocking the given request. When the // count reaches 0 (or immediately if the request is being cancelled), we // stop blocking the request and either resume or cancel it. void DecrementBlockCount(uint64 request_id, bool cancel); + void OnRequestDeleted(net::URLRequest* request); + // A map for each profile that maps an event name to a set of extensions that // are listening to that event. ListenerMap listeners_; @@ -104,6 +134,10 @@ class ExtensionWebRequestEventRouter { // to respond. BlockedRequestMap blocked_requests_; + // A map of HTTP(s) network requests. We use this to look up the URLRequest + // from the request ID given to us for HTTP-specific events. + HttpRequestMap http_requests_; + DISALLOW_COPY_AND_ASSIGN(ExtensionWebRequestEventRouter); }; diff --git a/chrome/browser/extensions/extension_webrequest_api_constants.cc b/chrome/browser/extensions/extension_webrequest_api_constants.cc index 82fdb31..460e21f 100644 --- a/chrome/browser/extensions/extension_webrequest_api_constants.cc +++ b/chrome/browser/extensions/extension_webrequest_api_constants.cc @@ -18,6 +18,8 @@ const char kUrlKey[] = "url"; const char kOnBeforeRedirect[] = "experimental.webRequest.onBeforeRedirect"; const char kOnBeforeRequest[] = "experimental.webRequest.onBeforeRequest"; +const char kOnBeforeSendHeaders[] = + "experimental.webRequest.onBeforeSendHeaders"; const char kOnCompleted[] = "experimental.webRequest.onCompleted"; const char kOnErrorOccurred[] = "experimental.webRequest.onErrorOccurred"; const char kOnHeadersReceived[] = "experimental.webRequest.onHeadersReceived"; diff --git a/chrome/browser/extensions/extension_webrequest_api_constants.h b/chrome/browser/extensions/extension_webrequest_api_constants.h index 4404d7c..a026f68 100644 --- a/chrome/browser/extensions/extension_webrequest_api_constants.h +++ b/chrome/browser/extensions/extension_webrequest_api_constants.h @@ -24,6 +24,7 @@ extern const char kUrlKey[]; // Events. extern const char kOnBeforeRedirect[]; extern const char kOnBeforeRequest[]; +extern const char kOnBeforeSendHeaders[]; extern const char kOnCompleted[]; extern const char kOnErrorOccurred[]; extern const char kOnHeadersReceived[]; diff --git a/chrome/browser/extensions/extension_webrequest_apitest.cc b/chrome/browser/extensions/extension_webrequest_apitest.cc index 7c25be8..3f7d0df 100644 --- a/chrome/browser/extensions/extension_webrequest_apitest.cc +++ b/chrome/browser/extensions/extension_webrequest_apitest.cc @@ -5,15 +5,25 @@ #include "base/command_line.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/common/chrome_switches.h" +#include "net/base/mock_host_resolver.h" -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebRequest) { +class ExtensionWebRequestApiTest : public ExtensionApiTest { + public: + virtual void SetUpInProcessBrowserTestFixture() { + ExtensionApiTest::SetUpInProcessBrowserTestFixture(); + host_resolver()->AddRule("*", "127.0.0.1"); + ASSERT_TRUE(StartTestServer()); + } +}; + +IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, WebRequest) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); ASSERT_TRUE(RunExtensionTest("webrequest/api")) << message_; } -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebRequestEvents) { +IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, WebRequestEvents) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc index 68e5138..110b966 100644 --- a/chrome/browser/net/chrome_network_delegate.cc +++ b/chrome/browser/net/chrome_network_delegate.cc @@ -45,15 +45,18 @@ ChromeNetworkDelegate::ChromeNetworkDelegate( ChromeNetworkDelegate::~ChromeNetworkDelegate() {} -bool ChromeNetworkDelegate::OnBeforeURLRequest( +int ChromeNetworkDelegate::OnBeforeURLRequest( net::URLRequest* request, net::CompletionCallback* callback) { return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( profile_id_, event_router_.get(), request, callback); } -void ChromeNetworkDelegate::OnSendHttpRequest( - net::HttpRequestHeaders* headers) { - DCHECK(headers); +int ChromeNetworkDelegate::OnBeforeSendHeaders( + uint64 request_id, + net::HttpRequestHeaders* headers, + net::CompletionCallback* callback) { + return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders( + profile_id_, event_router_.get(), request_id, headers, callback); } void ChromeNetworkDelegate::OnResponseStarted(net::URLRequest* request) { @@ -65,6 +68,11 @@ void ChromeNetworkDelegate::OnReadCompleted(net::URLRequest* request, ForwardProxyErrors(request, event_router_.get(), profile_id_); } +void ChromeNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) { + ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( + profile_id_, request); +} + net::URLRequestJob* ChromeNetworkDelegate::OnMaybeCreateURLRequestJob( net::URLRequest* request) { if (!protocol_handler_registry_) diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h index f6efe2e..9c75dd9 100644 --- a/chrome/browser/net/chrome_network_delegate.h +++ b/chrome/browser/net/chrome_network_delegate.h @@ -28,11 +28,14 @@ class ChromeNetworkDelegate : public net::NetworkDelegate { private: // NetworkDelegate methods: - virtual bool OnBeforeURLRequest(net::URLRequest* request, + virtual int OnBeforeURLRequest(net::URLRequest* request, + net::CompletionCallback* callback); + virtual int OnBeforeSendHeaders(uint64 request_id, + net::HttpRequestHeaders* headers, net::CompletionCallback* callback); - virtual void OnSendHttpRequest(net::HttpRequestHeaders* headers); virtual void OnResponseStarted(net::URLRequest* request); virtual void OnReadCompleted(net::URLRequest* request, int bytes_read); + virtual void OnURLRequestDestroyed(net::URLRequest* request); virtual net::URLRequestJob* OnMaybeCreateURLRequestJob( net::URLRequest* request); diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index 1c2cc18..5da894c 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -3594,6 +3594,21 @@ ] }, { + "name": "onBeforeSendHeaders", + "type": "function", + "description": "Fires before sending an HTTP request, once the request headers are available.", + "parameters": [ + { + "type": "object", + "name": "details", + "properties": { + "requestId": {"type": "string", "description": "The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request."}, + "url": {"type": "string"} + } + } + ] + }, + { "name": "onRequestSent", "type": "function", "description": "Fires when a request is sent to the server.", diff --git a/chrome/common/extensions/docs/experimental.webRequest.html b/chrome/common/extensions/docs/experimental.webRequest.html index a292885..233f35f 100644 --- a/chrome/common/extensions/docs/experimental.webRequest.html +++ b/chrome/common/extensions/docs/experimental.webRequest.html @@ -294,6 +294,8 @@ </li><li> <a href="#event-onBeforeRequest">onBeforeRequest</a> </li><li> + <a href="#event-onBeforeSendHeaders">onBeforeSendHeaders</a> + </li><li> <a href="#event-onCompleted">onCompleted</a> </li><li> <a href="#event-onErrorOccurred">onErrorOccurred</a> @@ -1289,6 +1291,233 @@ </div> <!-- /decription --> </div><div class="apiItem"> + <a name="event-onBeforeSendHeaders"></a> + <h4>onBeforeSendHeaders</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.experimental.webRequest.</span><span>onBeforeSendHeaders</span><span class="subdued">.addListener</span>(function(<span>object details</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fires before sending an HTTP request, once the request headers are available.</p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>details</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>requestId</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>url</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div><div class="apiItem"> <a name="event-onCompleted"></a> <h4>onCompleted</h4> diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html index 3ff08f9..9c88f86 100644 --- a/chrome/common/extensions/docs/samples.html +++ b/chrome/common/extensions/docs/samples.html @@ -313,7 +313,7 @@ <!-- STATIC CONTENT PLACEHOLDER --> <div id="static"><link rel="stylesheet" href="css/samples.css"> -<script>var search_data = {"0262260daf0c8f7b28feff2ef23b05e7abf9d1e0":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","ea2894c41cb8e80a4433a3e6c5772dadce9be90d":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","ede3c47b7757245be42ec33fd5ca63df4b490066":"A BROWSER ACTION WITH NO ICON THAT MAKES THE PAGE RED BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.EXECUTESCRIPT","fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","9a6e4ec46997fb92b324974afa08a3d007e2537f":"ANIMATED PAGE ACTION THIS EXTENSION ADDS AN ANIMATED BROWSER ACTION TO THE TOOLBAR. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.ONCLICKED CHROME.PAGEACTION.SETICON CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED","a1f7cf79dd555b04fa8d603247a040e644996293":"APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE","9747e3d6a3eab39bc7c17f11a80573c62d44c7e5":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","903e7277139e1e6caec123d3319cab295d8d1b3a":"CHROME SOUNDS ENJOY A MORE MAGICAL AND IMMERSIVE EXPERIENCE WHEN BROWSING THE WEB USING THE POWER OF SOUND. BACKGROUND_PAGE BOOKMARKS OPTIONS_PAGE TABS CHROME.BOOKMARKS.ONCREATED CHROME.BOOKMARKS.ONMOVED CHROME.BOOKMARKS.ONREMOVED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED","0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5":"CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL","ac31228200b41a87982e386cc90d3a6eee4ad885":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","7d5d6cf195bc25480256618e360aa38c6e6fba82":"CLD DISPLAYS THE LANGUAGE OF A TAB BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.DETECTLANGUAGE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED","5d81304a17cf7ac2887484f730fbd2b01e51e166":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","4daa6becd0899a54776d9cf7f09613ed1a9f4d77":"COOKIE API TEST EXTENSION TESTING COOKIE API BACKGROUND_PAGE BROWSER_ACTION COOKIES TABS CHROME.BROWSERACTION.ONCLICKED CHROME.COOKIES.GET CHROME.COOKIES.GETALL CHROME.COOKIES.ONCHANGED CHROME.COOKIES.REMOVE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL","6871d09f4a96bf9d4b6cc724d00e909cee0f3902":"CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP://NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","028eb5364924344029bcbe1d527f132fc72b34e5":"EMAIL THIS PAGE (BY GOOGLE) THIS EXTENSION ADDS AN EMAIL BUTTON TO THE TOOLBAR WHICH ALLOWS YOU TO EMAIL THE PAGE LINK USING YOUR DEFAULT MAIL CLIENT OR GMAIL. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.CONNECT CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.UPDATE","763a08e9b06595d785568a8d392b95a2f3700258":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","e3df888a89e35bdeb9c8bc8d03be5e1851b97c68":"EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE","8b0dd31216235941bdd8eb33fda915ef5cf79a82":"GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","4e35caa9742fb82dbd628892d23a781614f6eff6":"GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca":"GOOGLE MAIL CHECKER DISPLAYS THE NUMBER OF UNREAD MESSAGES IN YOUR GOOGLE MAIL INBOX. YOU CAN ALSO CLICK THE BUTTON TO OPEN YOUR INBOX. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","1682e05ea9a1bde985123b04f6f8ac50a8a64033":"GOOGLE WAVE NOTIFIER FIND OUT WHEN YOU HAVE NEW WAVES AND PREVIEW THEM FAST. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","14b9651fda4e57b2a5914ba73a779812201b750a":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","2020d72f2577f53caf8e94e3dbac0fb849ceaa4d":"IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE","0ea1588bd07b20338fc21f725de1542a5fdf9726":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","646325c25f572a1d15edc73d057f821d847a4fbe":"IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE","65b2fe595b7ac38dddd89cca50f5efd0017b0bd4":"KEYBOARD PIN CREATES A KEYBOARD SHORTCUT (C + SHIFT + P) TO TOGGLE THE PINNED STATE OF THE CURRENTLY SELECTED TAB BACKGROUND_PAGE TABS CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","ec97ec20ca2f095d081e39f1565fc12af09ef067":"MAPPY FINDS ADDRESSES IN THE WEB PAGE YOURE ON AND POPS UP A MAP WINDOW. BACKGROUND_PAGE PAGE_ACTION POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.SENDREQUEST","b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d":"MERGE WINDOWS MERGES ALL OF THE BROWSERS WINDOWS INTO THE CURRENT WINDOW BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.MOVE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT","51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e":"MESSAGE TIMER TIMES HOW LONG IT TAKES TO SEND A MESSAGE TO A CONTENT SCRIPT AND BACK. BROWSER_ACTION POPUP TABS CHROME.EXTENSION.ONCONNECT CHROME.EXTENSION.ONREQUEST CHROME.TABS.CONNECT CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.SENDREQUEST","4f6785ec4f937add6728615682dd37c9a42d9548":"MY BOOKMARKS A BROWSER ACTION WITH A POPUP DUMP OF ALL BOOKMARKS, INCLUDING SEARCH, ADD, EDIT AND DELETE. BOOKMARKS BROWSER_ACTION POPUP TABS CHROME.BOOKMARKS.CREATE CHROME.BOOKMARKS.GET CHROME.BOOKMARKS.GETTREE CHROME.BOOKMARKS.REMOVE CHROME.BOOKMARKS.UPDATE CHROME.TABS.CREATE","597015d3bcce3da693b02314afd607bec4f55291":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.TABS.CREATE","6444e5c8ae112a6a433909c5e770669cd16e2e5f":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","3aea027164cb9b732ba4a8c51cb93708891726ef":"NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","f799e26ceef2367cf836f24bcb47df4398b0df58":"NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS CHROME.TABS.CREATE","e787b322bddbc6289bb31b7d7550b1bf6456a80b":"OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED","8d0a50b57c26bb498be592e871001ffed91541b4":"PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW","80b86ccc6e8520660fa591caa565826f0ed1b12c":"PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED","d74c3c18a1c1dd18b035149105a306f837c8823e":"PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","beff6ecd9677dea0a7c648c5042165b48bb66f09":"PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED","3e8e226d87e431296bb110b4f6eb7eec2ca7a826":"PROXY SETTINGS SET CHROME-SPECIFIC PROXIES; A DEMONSTRATION OF CHROMES PROXY API BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL POPUP PROXY CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXPERIMENTAL.PROXY.ONPROXYERROR CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE","56a8d2ac24ca7bba78fd88ad57f43fc13c784497":"SAMPLE - OAUTH CONTACTS USES OAUTH TO CONNECT TO GOOGLES CONTACTS SERVICE AND DISPLAY A LIST OF YOUR CONTACTS. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","38f6e1e17756ede38b1364c7114a738ca717dcbb":"SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","fc89b35755483af30b66cd72cefa34a43a3e8312":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64":"TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE","e1697cacebad05218798bf3e8a0f724517f0e8c3":"TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED","b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6":"TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE","a3c674f7eb93621c590562ad3fa04de4f03f53a0":"WEBNAVIGATION TECH DEMO DEMONSTRATION OF THE WEBNAVIGATION EXTENSION API. BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL EXTENSION POPUP WEBNAVIGATION CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORENAVIGATE CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORERETARGET CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMMITTED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMPLETED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONERROROCCURRED CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE"}</script> +<script>var search_data = {"4da084813a9c0f3de28821a1c8d2504f5f7bcbad":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","0569ec913dfd1aa4fad58fff04af99b0de7ec4b6":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","a02f64d5e8c8f96efb45b26c11bfa2320deddd36":"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","ebed3a237b5606a154cfc0e6326821154607d388":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","2f7777c80368bb0a8caf057dffaadd5feed7e9ee":"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","4da5aeb0840b36af753e694f2e81c90620494688":"APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE","63349d2a4f5ec8f315a05fc9b1cab181ad546fd2":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","4c45b5015d2ca5f9053514ac70ff3acc3bca1f76":"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","2f41f968c8b6ddfc078363e305d2b530802a11dd":"CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL","32ff053c4a55b305243c83756304ca7c9d135ed0":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","6484bb796d9aef70aa1026c0edc0799bc7a48b68":"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","8818cf9ded850b5f0ba7348127526eb00165f202":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","ba79d21d1e9a1cf5edebc246b11f667406cb001f":"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","b6ab1c298a1c1f939b393f36868c937391502112":"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","fad4ea2189bbcce1d2669a409ed296b10ec8b7c9":"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","26af638d88737474bed3837343caa13f3b924615":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","97c797be0add2ec9ce72747b1ecdbd9b80bc73d9":"EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE","f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5":"GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","e83ae8cea73dfe87e420a9dac5e2906d795263cc":"GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","8ad6dbf5f536e3181945cd352930da9cc159dc71":"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","56529b7cbd67869d7fcebd6d46c3efddfe7b598f":"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","6deee0c2a7dbdd62a80deb526005814fa37e6556":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","f0f5a81e76c7b29f8d13543dafd728285ecc96d7":"IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE","6e8555409ac09df65620a4f1651e9f283983eec5":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","e08426e68f327ea625937f4668b89da16da0e467":"IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE","eaa06fc8b40a6d93059cb6b9fce753dd1c881a00":"KEYBOARD PIN CREATES A KEYBOARD SHORTCUT (C + SHIFT + P) TO TOGGLE THE PINNED STATE OF THE CURRENTLY SELECTED TAB BACKGROUND_PAGE TABS CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","5c7def7e0a26bac297128161b2bb9b2fc279985b":"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","d72b4e8576fb00ad176957738099c930cffcfb9e":"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","af975d20117c15a36dff66ef5a1ebca92f653969":"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","7772f091557a50889effa6e5b19e83b4cf80399b":"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","28c933f585b0903a56f9a16658aa26cf61f9da0f":"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","80e7eac29801029c81ecaabb7c7021bbd0ceea88":"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","e9e5f15da193c45aad4d49ced748dfbbd6c904b3":"NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","324e557c216dd6edbeb0112ed53d55a05b5e6112":"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","85a9f4cfd3645dfc4d1d90cc559261b689803626":"OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED","56bbb002845c9ada93807b2f83d51447adf146fd":"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","65afad56921c30f207a30f5ecf929e06b712f552":"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","7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9":"PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","a9ea9e35b2e9990e488afeb97407655ea14fc8dc":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","455ec3784d8094b318eac572bc092ec07c5286b0":"PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED","61590fb16b8bb53b72930c525cdd235ca90b9f97":"PROXY SETTINGS SET CHROME-SPECIFIC PROXIES; A DEMONSTRATION OF CHROMES PROXY API BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL POPUP PROXY CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXPERIMENTAL.PROXY.ONPROXYERROR CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE","545d6989740a0e7f57a9751c2ebc0e250053a08f":"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","39a3d4c4282ee5090652938decfb6df79b626151":"SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","364415e46171be6479a095b214eab9783a4648d2":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","ad0d399dfc6d92af6ee9b759d7792a0d0bb85370":"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","1e28bcf89e80466f155ab3a01a76cf5f60cb4104":"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","7b375c0f2c88517b42a5a341ac77e0762b481233":"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> @@ -361,11 +361,11 @@ </div> </div> -<div class="sample" id="0262260daf0c8f7b28feff2ef23b05e7abf9d1e0"> +<div class="sample" id="4da084813a9c0f3de28821a1c8d2504f5f7bcbad"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#0262260daf0c8f7b28feff2ef23b05e7abf9d1e0">A browser action which changes its icon when clicked.</a> + <a href="#4da084813a9c0f3de28821a1c8d2504f5f7bcbad">A browser action which changes its icon when clicked.</a> </h2> <p class="metadata features">Uses <span> @@ -392,21 +392,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_icon_path/">Browse source</a> - - <a href="examples/api/browserAction/set_icon_path.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_icon_path\">Browse source</a> + - <a href="examples\api\browserAction\set_icon_path.zip">Download source</a> </div> -</div><div class="sample" id="ea2894c41cb8e80a4433a3e6c5772dadce9be90d"> +</div><div class="sample" id="0569ec913dfd1aa4fad58fff04af99b0de7ec4b6"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#ea2894c41cb8e80a4433a3e6c5772dadce9be90d">A browser action with a popup that changes the page color.</a> + <a href="#0569ec913dfd1aa4fad58fff04af99b0de7ec4b6">A browser action with a popup that changes the page color.</a> </h2> <p class="metadata features">Uses <span> @@ -431,21 +431,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_page_color/">Browse source</a> - - <a href="examples/api/browserAction/set_page_color.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_page_color\">Browse source</a> + - <a href="examples\api\browserAction\set_page_color.zip">Download source</a> </div> -</div><div class="sample" id="ede3c47b7757245be42ec33fd5ca63df4b490066"> +</div><div class="sample" id="a02f64d5e8c8f96efb45b26c11bfa2320deddd36"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#ede3c47b7757245be42ec33fd5ca63df4b490066">A browser action with no icon that makes the page red</a> + <a href="#a02f64d5e8c8f96efb45b26c11bfa2320deddd36">A browser action with no icon that makes the page red</a> </h2> <p class="metadata features">Uses <span> @@ -476,21 +476,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/make_page_red/">Browse source</a> - - <a href="examples/api/browserAction/make_page_red.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\make_page_red\">Browse source</a> + - <a href="examples\api\browserAction\make_page_red.zip">Download source</a> </div> -</div><div class="sample" id="fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a"> +</div><div class="sample" id="ebed3a237b5606a154cfc0e6326821154607d388"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a">AcceptLanguage</a> + <a href="#ebed3a237b5606a154cfc0e6326821154607d388">AcceptLanguage</a> </h2> <p class="metadata features">Uses <span> @@ -514,27 +514,27 @@ <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/">Browse source</a> - - <a href="examples/api/i18n/getMessage.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\">Browse source</a> + - <a href="examples\api\i18n\getMessage.zip">Download source</a> </div> -</div><div class="sample" id="9a6e4ec46997fb92b324974afa08a3d007e2537f"> +</div><div class="sample" id="2f7777c80368bb0a8caf057dffaadd5feed7e9ee"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#9a6e4ec46997fb92b324974afa08a3d007e2537f">Animated Page Action</a> + <a href="#2f7777c80368bb0a8caf057dffaadd5feed7e9ee">Animated Page Action</a> </h2> <p class="metadata features">Uses <span> @@ -573,21 +573,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/set_icon/">Browse source</a> - - <a href="examples/api/pageAction/set_icon.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\set_icon\">Browse source</a> + - <a href="examples\api\pageAction\set_icon.zip">Download source</a> </div> -</div><div class="sample" id="a1f7cf79dd555b04fa8d603247a040e644996293"> +</div><div class="sample" id="4da5aeb0840b36af753e694f2e81c90620494688"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#a1f7cf79dd555b04fa8d603247a040e644996293">App Launcher</a> + <a href="#4da5aeb0840b36af753e694f2e81c90620494688">App Launcher</a> </h2> <p class="metadata features">Uses <span> @@ -617,25 +617,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css?content-type=text/plain">popup.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\popup.css?content-type=text/plain">popup.css</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\popup.html?content-type=text/plain">popup.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js?content-type=text/plain">popup.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\popup.js?content-type=text/plain">popup.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/">Browse source</a> - - <a href="examples/extensions/app_launcher.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\">Browse source</a> + - <a href="examples\extensions\app_launcher.zip">Download source</a> </div> -</div><div class="sample" id="9747e3d6a3eab39bc7c17f11a80573c62d44c7e5"> +</div><div class="sample" id="63349d2a4f5ec8f315a05fc9b1cab181ad546fd2"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#9747e3d6a3eab39bc7c17f11a80573c62d44c7e5">Blank new tab page</a> + <a href="#63349d2a4f5ec8f315a05fc9b1cab181ad546fd2">Blank new tab page</a> </h2> <p class="metadata features">Uses <span> @@ -654,21 +654,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/blank_ntp/">Browse source</a> - - <a href="examples/api/override/blank_ntp.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\blank_ntp\">Browse source</a> + - <a href="examples\api\override\blank_ntp.zip">Download source</a> </div> -</div><div class="sample" id="903e7277139e1e6caec123d3319cab295d8d1b3a"> - <img class="icon" src="examples/extensions/fx/icon.png"> +</div><div class="sample" id="4c45b5015d2ca5f9053514ac70ff3acc3bca1f76"> + <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 href="#903e7277139e1e6caec123d3319cab295d8d1b3a">Chrome Sounds</a> + <a href="#4c45b5015d2ca5f9053514ac70ff3acc3bca1f76">Chrome Sounds</a> </h2> <p class="metadata features">Uses <span> @@ -728,27 +728,27 @@ <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/">Browse source</a> - - <a href="examples/extensions/fx.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\">Browse source</a> + - <a href="examples\extensions\fx.zip">Download source</a> </div> -</div><div class="sample" id="0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5"> - <img class="icon" src="examples/extensions/buildbot/icon.png"> +</div><div class="sample" id="2f41f968c8b6ddfc078363e305d2b530802a11dd"> + <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 href="#0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5">Chromium Buildbot Monitor</a> + <a href="#2f41f968c8b6ddfc078363e305d2b530802a11dd">Chromium Buildbot Monitor</a> </h2> <p class="metadata features">Uses <span> @@ -785,25 +785,25 @@ <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> + <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> + <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/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\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/buildbot/popup.html?content-type=text/plain">popup.html</a></code> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/">Browse source</a> - - <a href="examples/extensions/buildbot.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\">Browse source</a> + - <a href="examples\extensions\buildbot.zip">Download source</a> </div> -</div><div class="sample" id="ac31228200b41a87982e386cc90d3a6eee4ad885"> +</div><div class="sample" id="32ff053c4a55b305243c83756304ca7c9d135ed0"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#ac31228200b41a87982e386cc90d3a6eee4ad885">Chromium Search</a> + <a href="#32ff053c4a55b305243c83756304ca7c9d135ed0">Chromium Search</a> </h2> <p class="metadata features">Uses <span> @@ -839,21 +839,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/chrome_search/">Browse source</a> - - <a href="examples/extensions/chrome_search.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\chrome_search\">Browse source</a> + - <a href="examples\extensions\chrome_search.zip">Download source</a> </div> -</div><div class="sample" id="7d5d6cf195bc25480256618e360aa38c6e6fba82"> +</div><div class="sample" id="6484bb796d9aef70aa1026c0edc0799bc7a48b68"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#7d5d6cf195bc25480256618e360aa38c6e6fba82">CLD</a> + <a href="#6484bb796d9aef70aa1026c0edc0799bc7a48b68">CLD</a> </h2> <p class="metadata features">Uses <span> @@ -888,21 +888,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/cld/">Browse source</a> - - <a href="examples/api/i18n/cld.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\cld\">Browse source</a> + - <a href="examples\api\i18n\cld.zip">Download source</a> </div> -</div><div class="sample" id="5d81304a17cf7ac2887484f730fbd2b01e51e166"> +</div><div class="sample" id="8818cf9ded850b5f0ba7348127526eb00165f202"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#5d81304a17cf7ac2887484f730fbd2b01e51e166">Context Menus Sample</a> + <a href="#8818cf9ded850b5f0ba7348127526eb00165f202">Context Menus Sample</a> </h2> <p class="metadata features">Uses <span> @@ -924,23 +924,23 @@ <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/contextMenus/basic/">Browse source</a> - - <a href="examples/api/contextMenus/basic.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\contextMenus\basic\">Browse source</a> + - <a href="examples\api\contextMenus\basic.zip">Download source</a> </div> -</div><div class="sample" id="4daa6becd0899a54776d9cf7f09613ed1a9f4d77"> - <img class="icon" src="examples/api/cookies/cookie.png"> +</div><div class="sample" id="ba79d21d1e9a1cf5edebc246b11f667406cb001f"> + <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 href="#4daa6becd0899a54776d9cf7f09613ed1a9f4d77">Cookie API Test Extension</a> + <a href="#ba79d21d1e9a1cf5edebc246b11f667406cb001f">Cookie API Test Extension</a> </h2> <p class="metadata features">Uses <span> @@ -986,23 +986,23 @@ <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/">Browse source</a> - - <a href="examples/api/cookies.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\cookies\">Browse source</a> + - <a href="examples\api\cookies.zip">Download source</a> </div> -</div><div class="sample" id="6871d09f4a96bf9d4b6cc724d00e909cee0f3902"> - <img class="icon" src="examples/howto/contentscript_xhr/sample-128.png"> +</div><div class="sample" id="b6ab1c298a1c1f939b393f36868c937391502112"> + <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 href="#6871d09f4a96bf9d4b6cc724d00e909cee0f3902">Cross-domain XMLHttpRequest from a content script</a> + <a href="#b6ab1c298a1c1f939b393f36868c937391502112">Cross-domain XMLHttpRequest from a content script</a> </h2> <p class="metadata features">Uses <span> @@ -1023,23 +1023,23 @@ <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/">Browse source</a> - - <a href="examples/howto/contentscript_xhr.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\howto\contentscript_xhr\">Browse source</a> + - <a href="examples\howto\contentscript_xhr.zip">Download source</a> </div> -</div><div class="sample" id="028eb5364924344029bcbe1d527f132fc72b34e5"> - <img class="icon" src="examples/extensions/email_this_page/mail_128x128.png"> +</div><div class="sample" id="fad4ea2189bbcce1d2669a409ed296b10ec8b7c9"> + <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 href="#028eb5364924344029bcbe1d527f132fc72b34e5">Email this page (by Google)</a> + <a href="#fad4ea2189bbcce1d2669a409ed296b10ec8b7c9">Email this page (by Google)</a> </h2> <p class="metadata features">Uses <span> @@ -1077,25 +1077,25 @@ <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/">Browse source</a> - - <a href="examples/extensions/email_this_page.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\email_this_page\">Browse source</a> + - <a href="examples\extensions\email_this_page.zip">Download source</a> </div> -</div><div class="sample" id="763a08e9b06595d785568a8d392b95a2f3700258"> - <img class="icon" src="examples/tutorials/analytics/analytics-extension-icon-128.png"> +</div><div class="sample" id="26af638d88737474bed3837343caa13f3b924615"> + <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 href="#763a08e9b06595d785568a8d392b95a2f3700258">Event Tracking with Google Analytics</a> + <a href="#26af638d88737474bed3837343caa13f3b924615">Event Tracking with Google Analytics</a> </h2> <p class="metadata features">Uses <span> @@ -1120,25 +1120,25 @@ <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/">Browse source</a> - - <a href="examples/tutorials/analytics.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\analytics\">Browse source</a> + - <a href="examples\tutorials\analytics.zip">Download source</a> </div> -</div><div class="sample" id="e3df888a89e35bdeb9c8bc8d03be5e1851b97c68"> - <img class="icon" src="examples/api/omnibox/extension-docs/icon-128.png"> +</div><div class="sample" id="97c797be0add2ec9ce72747b1ecdbd9b80bc73d9"> + <img class="icon" src="examples\api\omnibox\extension-docs\icon-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#e3df888a89e35bdeb9c8bc8d03be5e1851b97c68">Extension Docs Search</a> + <a href="#97c797be0add2ec9ce72747b1ecdbd9b80bc73d9">Extension Docs Search</a> </h2> <p class="metadata features">Uses <span> @@ -1170,21 +1170,21 @@ <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/extension-docs/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\extension-docs\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/extension-docs/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\extension-docs\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/extension-docs/">Browse source</a> - - <a href="examples/api/omnibox/extension-docs.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\extension-docs\">Browse source</a> + - <a href="examples\api\omnibox\extension-docs.zip">Download source</a> </div> -</div><div class="sample" id="8b0dd31216235941bdd8eb33fda915ef5cf79a82"> - <img class="icon" src="examples/extensions/calendar/images/icon-128.gif"> +</div><div class="sample" id="f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5"> + <img class="icon" src="examples\extensions\calendar\images/icon-128.gif"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#8b0dd31216235941bdd8eb33fda915ef5cf79a82">Google Calendar Checker (by Google)</a> + <a href="#f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5">Google Calendar Checker (by Google)</a> </h2> <p class="metadata features">Uses <span> @@ -1238,31 +1238,31 @@ <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/calendar/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\_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/calendar/javascript/background.js?content-type=text/plain">javascript/background.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\javascript\background.js?content-type=text/plain">javascript\background.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/javascript/options.js?content-type=text/plain">javascript/options.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\javascript\options.js?content-type=text/plain">javascript\options.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/javascript/util.js?content-type=text/plain">javascript/util.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\javascript\util.js?content-type=text/plain">javascript\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/calendar/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\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/calendar/views/background.html?content-type=text/plain">views/background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\views\background.html?content-type=text/plain">views\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/calendar/views/options.html?content-type=text/plain">views/options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\views\options.html?content-type=text/plain">views\options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/">Browse source</a> - - <a href="examples/extensions/calendar.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\">Browse source</a> + - <a href="examples\extensions\calendar.zip">Download source</a> </div> -</div><div class="sample" id="4e35caa9742fb82dbd628892d23a781614f6eff6"> - <img class="icon" src="examples/extensions/gdocs/img/docs_spreadsheets-128.gif"> +</div><div class="sample" id="e83ae8cea73dfe87e420a9dac5e2906d795263cc"> + <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 href="#4e35caa9742fb82dbd628892d23a781614f6eff6">Google Document List Viewer</a> + <a href="#e83ae8cea73dfe87e420a9dac5e2906d795263cc">Google Document List Viewer</a> </h2> <p class="metadata features">Uses <span> @@ -1307,33 +1307,33 @@ <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/">Browse source</a> - - <a href="examples/extensions/gdocs.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\">Browse source</a> + - <a href="examples\extensions\gdocs.zip">Download source</a> </div> -</div><div class="sample" id="bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca"> - <img class="icon" src="examples/extensions/gmail/icon_128.png"> +</div><div class="sample" id="8ad6dbf5f536e3181945cd352930da9cc159dc71"> + <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 href="#bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca">Google Mail Checker</a> + <a href="#8ad6dbf5f536e3181945cd352930da9cc159dc71">Google Mail Checker</a> </h2> <p class="metadata features">Uses <span> @@ -1381,107 +1381,107 @@ <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">Browse source</a> - - <a href="examples/extensions/gmail.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\">Browse source</a> + - <a href="examples\extensions\gmail.zip">Download source</a> </div> -</div><div class="sample" id="1682e05ea9a1bde985123b04f6f8ac50a8a64033"> - <img class="icon" src="examples/extensions/wave/128.png"> +</div><div class="sample" id="56529b7cbd67869d7fcebd6d46c3efddfe7b598f"> + <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 href="#1682e05ea9a1bde985123b04f6f8ac50a8a64033">Google Wave Notifier</a> + <a href="#56529b7cbd67869d7fcebd6d46c3efddfe7b598f">Google Wave Notifier</a> </h2> <p class="metadata features">Uses <span> @@ -1524,33 +1524,33 @@ <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/">Browse source</a> - - <a href="examples/extensions/wave.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\">Browse source</a> + - <a href="examples\extensions\wave.zip">Download source</a> </div> -</div><div class="sample" id="14b9651fda4e57b2a5914ba73a779812201b750a"> +</div><div class="sample" id="6deee0c2a7dbdd62a80deb526005814fa37e6556"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#14b9651fda4e57b2a5914ba73a779812201b750a">Hello World</a> + <a href="#6deee0c2a7dbdd62a80deb526005814fa37e6556">Hello World</a> </h2> <p class="metadata features">Uses <span> @@ -1572,21 +1572,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/getstarted/">Browse source</a> - - <a href="examples/tutorials/getstarted.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\getstarted\">Browse source</a> + - <a href="examples\tutorials\getstarted.zip">Download source</a> </div> -</div><div class="sample" id="2020d72f2577f53caf8e94e3dbac0fb849ceaa4d"> - <img class="icon" src="examples/api/idle/idle_simple/sample-128.png"> +</div><div class="sample" id="f0f5a81e76c7b29f8d13543dafd728285ecc96d7"> + <img class="icon" src="examples\api\idle\idle_simple\sample-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#2020d72f2577f53caf8e94e3dbac0fb849ceaa4d">Idle - Simple Example</a> + <a href="#f0f5a81e76c7b29f8d13543dafd728285ecc96d7">Idle - Simple Example</a> </h2> <p class="metadata features">Uses <span> @@ -1617,23 +1617,23 @@ <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/idle/idle_simple/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\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/idle/idle_simple/history.html?content-type=text/plain">history.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\history.html?content-type=text/plain">history.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/idle/idle_simple/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/idle/idle_simple/">Browse source</a> - - <a href="examples/api/idle/idle_simple.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\">Browse source</a> + - <a href="examples\api\idle\idle_simple.zip">Download source</a> </div> -</div><div class="sample" id="0ea1588bd07b20338fc21f725de1542a5fdf9726"> +</div><div class="sample" id="6e8555409ac09df65620a4f1651e9f283983eec5"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#0ea1588bd07b20338fc21f725de1542a5fdf9726">iGoogle new tab page</a> + <a href="#6e8555409ac09df65620a4f1651e9f283983eec5">iGoogle new tab page</a> </h2> <p class="metadata features">Uses <span> @@ -1652,21 +1652,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/override_igoogle/">Browse source</a> - - <a href="examples/api/override/override_igoogle.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\override_igoogle\">Browse source</a> + - <a href="examples\api\override\override_igoogle.zip">Download source</a> </div> -</div><div class="sample" id="646325c25f572a1d15edc73d057f821d847a4fbe"> - <img class="icon" src="examples/extensions/imageinfo/imageinfo-128.png"> +</div><div class="sample" id="e08426e68f327ea625937f4668b89da16da0e467"> + <img class="icon" src="examples\extensions\imageinfo\imageinfo-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#646325c25f572a1d15edc73d057f821d847a4fbe">Imageinfo</a> + <a href="#e08426e68f327ea625937f4668b89da16da0e467">Imageinfo</a> </h2> <p class="metadata features">Uses <span> @@ -1699,29 +1699,29 @@ <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/imageinfo/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\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/imageinfo/imageinfo/binaryajax.js?content-type=text/plain">imageinfo/binaryajax.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\imageinfo\binaryajax.js?content-type=text/plain">imageinfo\binaryajax.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/imageinfo/exif.js?content-type=text/plain">imageinfo/exif.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\imageinfo\exif.js?content-type=text/plain">imageinfo\exif.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/imageinfo/imageinfo.js?content-type=text/plain">imageinfo/imageinfo.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\imageinfo\imageinfo.js?content-type=text/plain">imageinfo\imageinfo.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/info.html?content-type=text/plain">info.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\info.html?content-type=text/plain">info.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/">Browse source</a> - - <a href="examples/extensions/imageinfo.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\">Browse source</a> + - <a href="examples\extensions\imageinfo.zip">Download source</a> </div> -</div><div class="sample" id="65b2fe595b7ac38dddd89cca50f5efd0017b0bd4"> +</div><div class="sample" id="eaa06fc8b40a6d93059cb6b9fce753dd1c881a00"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#65b2fe595b7ac38dddd89cca50f5efd0017b0bd4">Keyboard Pin</a> + <a href="#eaa06fc8b40a6d93059cb6b9fce753dd1c881a00">Keyboard Pin</a> </h2> <p class="metadata features">Uses <span> @@ -1751,23 +1751,23 @@ <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/pin/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\pin\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/pin/inject.js?content-type=text/plain">inject.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\pin\inject.js?content-type=text/plain">inject.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/pin/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\pin\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/pin/">Browse source</a> - - <a href="examples/api/tabs/pin.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\pin\">Browse source</a> + - <a href="examples\api\tabs\pin.zip">Download source</a> </div> -</div><div class="sample" id="ec97ec20ca2f095d081e39f1565fc12af09ef067"> - <img class="icon" src="examples/extensions/mappy/icon.png"> +</div><div class="sample" id="5c7def7e0a26bac297128161b2bb9b2fc279985b"> + <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 href="#ec97ec20ca2f095d081e39f1565fc12af09ef067">Mappy</a> + <a href="#5c7def7e0a26bac297128161b2bb9b2fc279985b">Mappy</a> </h2> <p class="metadata features">Uses <span> @@ -1813,25 +1813,25 @@ <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/">Browse source</a> - - <a href="examples/extensions/mappy.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\mappy\">Browse source</a> + - <a href="examples\extensions\mappy.zip">Download source</a> </div> -</div><div class="sample" id="b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d"> - <img class="icon" src="examples/api/windows/merge_windows/merge_windows_128.png"> +</div><div class="sample" id="d72b4e8576fb00ad176957738099c930cffcfb9e"> + <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 href="#b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d">Merge Windows</a> + <a href="#d72b4e8576fb00ad176957738099c930cffcfb9e">Merge Windows</a> </h2> <p class="metadata features">Uses <span> @@ -1868,21 +1868,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/windows/merge_windows/">Browse source</a> - - <a href="examples/api/windows/merge_windows.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\windows\merge_windows\">Browse source</a> + - <a href="examples\api\windows\merge_windows.zip">Download source</a> </div> -</div><div class="sample" id="51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e"> +</div><div class="sample" id="af975d20117c15a36dff66ef5a1ebca92f653969"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e">Message Timer</a> + <a href="#af975d20117c15a36dff66ef5a1ebca92f653969">Message Timer</a> </h2> <p class="metadata features">Uses <span> @@ -1917,23 +1917,23 @@ <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/">Browse source</a> - - <a href="examples/api/messaging/timer.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\messaging\timer\">Browse source</a> + - <a href="examples\api\messaging\timer.zip">Download source</a> </div> -</div><div class="sample" id="4f6785ec4f937add6728615682dd37c9a42d9548"> +</div><div class="sample" id="7772f091557a50889effa6e5b19e83b4cf80399b"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#4f6785ec4f937add6728615682dd37c9a42d9548">My Bookmarks</a> + <a href="#7772f091557a50889effa6e5b19e83b4cf80399b">My Bookmarks</a> </h2> <p class="metadata features">Uses <span> @@ -1971,21 +1971,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/bookmarks/basic/">Browse source</a> - - <a href="examples/api/bookmarks/basic.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\bookmarks\basic\">Browse source</a> + - <a href="examples\api\bookmarks\basic.zip">Download source</a> </div> -</div><div class="sample" id="597015d3bcce3da693b02314afd607bec4f55291"> - <img class="icon" src="examples/extensions/news_a11y/news_icon.png"> +</div><div class="sample" id="28c933f585b0903a56f9a16658aa26cf61f9da0f"> + <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 href="#597015d3bcce3da693b02314afd607bec4f55291">News Reader</a> + <a href="#28c933f585b0903a56f9a16658aa26cf61f9da0f">News Reader</a> </h2> <p class="metadata features">Uses <span> @@ -2010,21 +2010,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_a11y/">Browse source</a> - - <a href="examples/extensions/news_a11y.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_a11y\">Browse source</a> + - <a href="examples\extensions\news_a11y.zip">Download source</a> </div> -</div><div class="sample" id="6444e5c8ae112a6a433909c5e770669cd16e2e5f"> - <img class="icon" src="examples/extensions/news_i18n/news_icon.png"> +</div><div class="sample" id="80e7eac29801029c81ecaabb7c7021bbd0ceea88"> + <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 href="#6444e5c8ae112a6a433909c5e770669cd16e2e5f">News Reader</a> + <a href="#80e7eac29801029c81ecaabb7c7021bbd0ceea88">News Reader</a> </h2> <p class="metadata features">Uses <span> @@ -2051,27 +2051,27 @@ <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/">Browse source</a> - - <a href="examples/extensions/news_i18n.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\">Browse source</a> + - <a href="examples\extensions\news_i18n.zip">Download source</a> </div> -</div><div class="sample" id="3aea027164cb9b732ba4a8c51cb93708891726ef"> - <img class="icon" src="examples/extensions/news/images/news_icon.png"> +</div><div class="sample" id="e9e5f15da193c45aad4d49ced748dfbbd6c904b3"> + <img class="icon" src="examples\extensions\news\images/news_icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#3aea027164cb9b732ba4a8c51cb93708891726ef">News Reader (by Google)</a> + <a href="#e9e5f15da193c45aad4d49ced748dfbbd6c904b3">News Reader (by Google)</a> </h2> <p class="metadata features">Uses <span> @@ -2106,37 +2106,37 @@ <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/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\_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/css/feed.css?content-type=text/plain">css/feed.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\css\feed.css?content-type=text/plain">css\feed.css</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/css/options.css?content-type=text/plain">css/options.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\css\options.css?content-type=text/plain">css\options.css</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/javascript/feed.js?content-type=text/plain">javascript/feed.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\javascript\feed.js?content-type=text/plain">javascript\feed.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/javascript/options.js?content-type=text/plain">javascript/options.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\javascript\options.js?content-type=text/plain">javascript\options.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/javascript/util.js?content-type=text/plain">javascript/util.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\javascript\util.js?content-type=text/plain">javascript\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/news/manifest.json?content-type=text/plain">manifest.json</a></code> + <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><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/views/background.html?content-type=text/plain">views/background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\views\background.html?content-type=text/plain">views\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/news/views/feed.html?content-type=text/plain">views/feed.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\views\feed.html?content-type=text/plain">views\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/views/options.html?content-type=text/plain">views/options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\views\options.html?content-type=text/plain">views\options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">Browse source</a> - - <a href="examples/extensions/news.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\">Browse source</a> + - <a href="examples\extensions\news.zip">Download source</a> </div> -</div><div class="sample" id="f799e26ceef2367cf836f24bcb47df4398b0df58"> - <img class="icon" src="examples/api/notifications/128.png"> +</div><div class="sample" id="324e557c216dd6edbeb0112ed53d55a05b5e6112"> + <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 href="#f799e26ceef2367cf836f24bcb47df4398b0df58">Notification Demo</a> + <a href="#324e557c216dd6edbeb0112ed53d55a05b5e6112">Notification Demo</a> </h2> <p class="metadata features">Uses <span> @@ -2164,25 +2164,25 @@ <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/">Browse source</a> - - <a href="examples/api/notifications.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\notifications\">Browse source</a> + - <a href="examples\api\notifications.zip">Download source</a> </div> -</div><div class="sample" id="e787b322bddbc6289bb31b7d7550b1bf6456a80b"> +</div><div class="sample" id="85a9f4cfd3645dfc4d1d90cc559261b689803626"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#e787b322bddbc6289bb31b7d7550b1bf6456a80b">Omnibox Example</a> + <a href="#85a9f4cfd3645dfc4d1d90cc559261b689803626">Omnibox Example</a> </h2> <p class="metadata features">Uses <span> @@ -2203,21 +2203,21 @@ <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/simple-example/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\simple-example\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/simple-example/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\simple-example\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/simple-example/">Browse source</a> - - <a href="examples/api/omnibox/simple-example.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\simple-example\">Browse source</a> + - <a href="examples\api\omnibox\simple-example.zip">Download source</a> </div> -</div><div class="sample" id="8d0a50b57c26bb498be592e871001ffed91541b4"> - <img class="icon" src="examples/api/pageAction/pageaction_by_content/sandwich-128.png"> +</div><div class="sample" id="56bbb002845c9ada93807b2f83d51447adf146fd"> + <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 href="#8d0a50b57c26bb498be592e871001ffed91541b4">Page action by content</a> + <a href="#56bbb002845c9ada93807b2f83d51447adf146fd">Page action by content</a> </h2> <p class="metadata features">Uses <span> @@ -2243,23 +2243,23 @@ <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/">Browse source</a> - - <a href="examples/api/pageAction/pageaction_by_content.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_content\">Browse source</a> + - <a href="examples\api\pageAction\pageaction_by_content.zip">Download source</a> </div> -</div><div class="sample" id="80b86ccc6e8520660fa591caa565826f0ed1b12c"> - <img class="icon" src="examples/api/pageAction/pageaction_by_url/icon-128.png"> +</div><div class="sample" id="65afad56921c30f207a30f5ecf929e06b712f552"> + <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 href="#80b86ccc6e8520660fa591caa565826f0ed1b12c">Page action by URL</a> + <a href="#65afad56921c30f207a30f5ecf929e06b712f552">Page action by URL</a> </h2> <p class="metadata features">Uses <span> @@ -2286,21 +2286,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_url/">Browse source</a> - - <a href="examples/api/pageAction/pageaction_by_url.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_url\">Browse source</a> + - <a href="examples\api\pageAction\pageaction_by_url.zip">Download source</a> </div> -</div><div class="sample" id="d74c3c18a1c1dd18b035149105a306f837c8823e"> +</div><div class="sample" id="7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#d74c3c18a1c1dd18b035149105a306f837c8823e">Page Benchmarker</a> + <a href="#7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9">Page Benchmarker</a> </h2> <p class="metadata features">Uses <span> @@ -2362,53 +2362,53 @@ <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> + <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/jquery/jquery-1.4.2.min.js?content-type=text/plain">jquery/jquery-1.4.2.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery-1.4.2.min.js?content-type=text/plain">jquery\jquery-1.4.2.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/benchmark/jquery/jquery-ui-1.8.4.custom.min.js?content-type=text/plain">jquery/jquery-ui-1.8.4.custom.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery-ui-1.8.4.custom.min.js?content-type=text/plain">jquery\jquery-ui-1.8.4.custom.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/benchmark/jquery/jquery.client.js?content-type=text/plain">jquery/jquery.client.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.client.js?content-type=text/plain">jquery\jquery.client.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/jquery/jquery.flot.dashes.js?content-type=text/plain">jquery/jquery.flot.dashes.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.dashes.js?content-type=text/plain">jquery\jquery.flot.dashes.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/jquery/jquery.flot.js?content-type=text/plain">jquery/jquery.flot.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.js?content-type=text/plain">jquery\jquery.flot.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/jquery/jquery.flot.min.js?content-type=text/plain">jquery/jquery.flot.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.min.js?content-type=text/plain">jquery\jquery.flot.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/benchmark/jquery/jquery.flot.navigate.js?content-type=text/plain">jquery/jquery.flot.navigate.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.navigate.js?content-type=text/plain">jquery\jquery.flot.navigate.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/jquery/jquery.flot.valuelabels.js?content-type=text/plain">jquery/jquery.flot.valuelabels.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.valuelabels.js?content-type=text/plain">jquery\jquery.flot.valuelabels.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/jsevalcontext.js?content-type=text/plain">jst/jsevalcontext.js</a></code> + <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> + <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> + <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> + <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> + <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> + <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> + <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><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/util/sorttable.js?content-type=text/plain">util/sorttable.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\util\sorttable.js?content-type=text/plain">util\sorttable.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/util/table2CSV.js?content-type=text/plain">util/table2CSV.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\util\table2CSV.js?content-type=text/plain">util\table2CSV.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/">Browse source</a> - - <a href="examples/extensions/benchmark.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\">Browse source</a> + - <a href="examples\extensions\benchmark.zip">Download source</a> </div> -</div><div class="sample" id="e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd"> +</div><div class="sample" id="a9ea9e35b2e9990e488afeb97407655ea14fc8dc"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd">Print this page</a> + <a href="#a9ea9e35b2e9990e488afeb97407655ea14fc8dc">Print this page</a> </h2> <p class="metadata features">Uses <span> @@ -2435,21 +2435,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/print/">Browse source</a> - - <a href="examples/api/browserAction/print.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\print\">Browse source</a> + - <a href="examples\api\browserAction\print.zip">Download source</a> </div> -</div><div class="sample" id="beff6ecd9677dea0a7c648c5042165b48bb66f09"> +</div><div class="sample" id="455ec3784d8094b318eac572bc092ec07c5286b0"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#beff6ecd9677dea0a7c648c5042165b48bb66f09">Process Monitor</a> + <a href="#455ec3784d8094b318eac572bc092ec07c5286b0">Process Monitor</a> </h2> <p class="metadata features">Uses <span> @@ -2477,21 +2477,21 @@ <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/process_monitor/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\process_monitor\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/process_monitor/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\process_monitor\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/process_monitor/">Browse source</a> - - <a href="examples/api/processes/process_monitor.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\process_monitor\">Browse source</a> + - <a href="examples\api\processes\process_monitor.zip">Download source</a> </div> -</div><div class="sample" id="3e8e226d87e431296bb110b4f6eb7eec2ca7a826"> - <img class="icon" src="examples/extensions/proxy_configuration/icon128.png"> +</div><div class="sample" id="61590fb16b8bb53b72930c525cdd235ca90b9f97"> + <img class="icon" src="examples\extensions\proxy_configuration\icon128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#3e8e226d87e431296bb110b4f6eb7eec2ca7a826">Proxy Settings</a> + <a href="#61590fb16b8bb53b72930c525cdd235ca90b9f97">Proxy Settings</a> </h2> <p class="metadata features">Uses <span> @@ -2534,37 +2534,37 @@ <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/proxy_configuration/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\_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/proxy_configuration/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\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/proxy_configuration/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\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/proxy_configuration/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\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/proxy_configuration/proxy_error_handler.js?content-type=text/plain">proxy_error_handler.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\proxy_error_handler.js?content-type=text/plain">proxy_error_handler.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js?content-type=text/plain">proxy_form_controller.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\proxy_form_controller.js?content-type=text/plain">proxy_form_controller.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/proxy_configuration/test/jsunittest.js?content-type=text/plain">test/jsunittest.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\test\jsunittest.js?content-type=text/plain">test\jsunittest.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/proxy_configuration/test/proxy_form_controller_test.html?content-type=text/plain">test/proxy_form_controller_test.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\test\proxy_form_controller_test.html?content-type=text/plain">test\proxy_form_controller_test.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/proxy_configuration/test/proxy_form_controller_test.js?content-type=text/plain">test/proxy_form_controller_test.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\test\proxy_form_controller_test.js?content-type=text/plain">test\proxy_form_controller_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/proxy_configuration/test/unittest.css?content-type=text/plain">test/unittest.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\test\unittest.css?content-type=text/plain">test\unittest.css</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/proxy_configuration/">Browse source</a> - - <a href="examples/extensions/proxy_configuration.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\proxy_configuration\">Browse source</a> + - <a href="examples\extensions\proxy_configuration.zip">Download source</a> </div> -</div><div class="sample" id="56a8d2ac24ca7bba78fd88ad57f43fc13c784497"> - <img class="icon" src="examples/extensions/oauth_contacts/img/icon-128.png"> +</div><div class="sample" id="545d6989740a0e7f57a9751c2ebc0e250053a08f"> + <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 href="#56a8d2ac24ca7bba78fd88ad57f43fc13c784497">Sample - OAuth Contacts</a> + <a href="#545d6989740a0e7f57a9751c2ebc0e250053a08f">Sample - OAuth Contacts</a> </h2> <p class="metadata features">Uses <span> @@ -2605,29 +2605,29 @@ <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> + <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> + <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/">Browse source</a> - - <a href="examples/extensions/oauth_contacts.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\">Browse source</a> + - <a href="examples\extensions\oauth_contacts.zip">Download source</a> </div> -</div><div class="sample" id="38f6e1e17756ede38b1364c7114a738ca717dcbb"> - <img class="icon" src="examples/api/infobars/sandwichbar/sandwich-128.png"> +</div><div class="sample" id="39a3d4c4282ee5090652938decfb6df79b626151"> + <img class="icon" src="examples\api\infobars\sandwichbar\sandwich-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#38f6e1e17756ede38b1364c7114a738ca717dcbb">SandwichBar</a> + <a href="#39a3d4c4282ee5090652938decfb6df79b626151">SandwichBar</a> </h2> <p class="metadata features">Uses <span> @@ -2653,25 +2653,25 @@ <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/infobars/sandwichbar/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\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/infobars/sandwichbar/contentscript.js?content-type=text/plain">contentscript.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\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/infobars/sandwichbar/infobar.html?content-type=text/plain">infobar.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\infobar.html?content-type=text/plain">infobar.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/">Browse source</a> - - <a href="examples/api/infobars/sandwichbar.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\">Browse source</a> + - <a href="examples\api\infobars\sandwichbar.zip">Download source</a> </div> -</div><div class="sample" id="fc89b35755483af30b66cd72cefa34a43a3e8312"> +</div><div class="sample" id="364415e46171be6479a095b214eab9783a4648d2"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#fc89b35755483af30b66cd72cefa34a43a3e8312">Show Tabs in Process</a> + <a href="#364415e46171be6479a095b214eab9783a4648d2">Show Tabs in Process</a> </h2> <p class="metadata features">Uses <span> @@ -2713,21 +2713,21 @@ <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/show_tabs/">Browse source</a> - - <a href="examples/api/processes/show_tabs.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\show_tabs\">Browse source</a> + - <a href="examples\api\processes\show_tabs.zip">Download source</a> </div> -</div><div class="sample" id="230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64"> +</div><div class="sample" id="ad0d399dfc6d92af6ee9b759d7792a0d0bb85370"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64">Tab Inspector</a> + <a href="#ad0d399dfc6d92af6ee9b759d7792a0d0bb85370">Tab Inspector</a> </h2> <p class="metadata features">Uses <span> @@ -2802,25 +2802,25 @@ <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/">Browse source</a> - - <a href="examples/api/tabs/inspector.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\inspector\">Browse source</a> + - <a href="examples\api\tabs\inspector.zip">Download source</a> </div> -</div><div class="sample" id="e1697cacebad05218798bf3e8a0f724517f0e8c3"> +</div><div class="sample" id="1e28bcf89e80466f155ab3a01a76cf5f60cb4104"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#e1697cacebad05218798bf3e8a0f724517f0e8c3">Test Screenshot Extension</a> + <a href="#1e28bcf89e80466f155ab3a01a76cf5f60cb4104">Test Screenshot Extension</a> </h2> <p class="metadata features">Uses <span> @@ -2855,25 +2855,25 @@ <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> + <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/">Browse source</a> - - <a href="examples/api/tabs/screenshot.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\screenshot\">Browse source</a> + - <a href="examples\api\tabs\screenshot.zip">Download source</a> </div> -</div><div class="sample" id="b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6"> +</div><div class="sample" id="7b375c0f2c88517b42a5a341ac77e0762b481233"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6">Typed URL History</a> + <a href="#7b375c0f2c88517b42a5a341ac77e0762b481233">Typed URL History</a> </h2> <p class="metadata features">Uses <span> @@ -2902,17 +2902,17 @@ <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> + <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> + <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> + <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> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/history/showHistory/">Browse source</a> - - <a href="examples/api/history/showHistory.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\history\showHistory\">Browse source</a> + - <a href="examples\api\history\showHistory.zip">Download source</a> </div> </div><div class="sample" id="a3c674f7eb93621c590562ad3fa04de4f03f53a0"> <img class="icon" style="display: none; "> diff --git a/chrome/test/data/extensions/api_test/webrequest/api/test.html b/chrome/test/data/extensions/api_test/webrequest/api/test.html index 368b3bb..86dbf20 100644 --- a/chrome/test/data/extensions/api_test/webrequest/api/test.html +++ b/chrome/test/data/extensions/api_test/webrequest/api/test.html @@ -3,6 +3,8 @@ chrome.test.runTests([ function addListeners() { chrome.experimental.webRequest.onBeforeRequest.addListener( function(details) {}); + chrome.experimental.webRequest.onBeforeSendHeaders.addListener( + function(details) {}); chrome.experimental.webRequest.onRequestSent.addListener( function(details) {}); chrome.experimental.webRequest.onHeadersReceived.addListener( diff --git a/chrome/test/data/extensions/api_test/webrequest/events/test.html b/chrome/test/data/extensions/api_test/webrequest/events/test.html index 8801a1d..0f3a5c8 100644 --- a/chrome/test/data/extensions/api_test/webrequest/events/test.html +++ b/chrome/test/data/extensions/api_test/webrequest/events/test.html @@ -2,6 +2,25 @@ var getURL = chrome.extension.getURL; var expectedEventData; var capturedEventData; +var tabId; + +// PORT will be changed to the port of the test server. +var URL_HTTP_SIMPLE_LOAD = + 'http://www.a.com:PORT/files/extensions/api_test/webrequest/events/simpleLoad/a.html'; + +function runTests(tests) { + chrome.tabs.getSelected(null, function(tab) { + tabId = tab.id; + chrome.test.getConfig(function(config) { + var fixPort = function(url) { + return url.replace(/PORT/, config.testServer.port); + }; + URL_HTTP_SIMPLE_LOAD = fixPort(URL_HTTP_SIMPLE_LOAD); + + chrome.test.runTests(tests); + }); + }); +} function expect(data, filter, extraInfoSpec) { expectedEventData = data; @@ -32,6 +51,11 @@ function initListeners(filter, extraInfoSpec) { captureEvent("onBeforeRequest", details); return {cancel: true}; // no effect unless event is blocking. }, filter, extraInfoSpec); + chrome.experimental.webRequest.onBeforeSendHeaders.addListener( + function(details) { + captureEvent("onBeforeSendHeaders", details); + return {cancel: true}; // no effect unless event is blocking. + }, filter, extraInfoSpec); chrome.experimental.webRequest.onRequestSent.addListener( function(details) { captureEvent("onRequestSent", details); @@ -70,6 +94,7 @@ function removeListeners() { chrome.test.assertEq(0, event.subEvents_.length); } helper(chrome.experimental.webRequest.onBeforeRequest); + helper(chrome.experimental.webRequest.onBeforeSendHeaders); helper(chrome.experimental.webRequest.onRequestSent); helper(chrome.experimental.webRequest.onHeadersReceived); helper(chrome.experimental.webRequest.onBeforeRedirect); @@ -77,104 +102,121 @@ function removeListeners() { helper(chrome.experimental.webRequest.onErrorOccurred); } -chrome.tabs.getSelected(null, function(tab) { - var tabId = tab.id; +runTests([ + // Navigates to a blank page. + function simpleLoad() { + expect([ + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "main_frame", + url: getURL("simpleLoad/a.html") + } + ], + ]); + chrome.tabs.update(tabId, { url: getURL("simpleLoad/a.html") }); + }, - chrome.test.runTests([ - // Navigates to a blank page. - function simpleLoad() { - expect([ - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "main_frame", - url: getURL("simpleLoad/a.html") - } - ], - ]); - chrome.tabs.update(tabId, { url: getURL("simpleLoad/a.html") }); - }, + // Navigates to a blank page via HTTP. Only HTTP requests get the + // onBeforeSendHeaders event. + function simpleLoadHttp() { + expect([ + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "main_frame", + url: URL_HTTP_SIMPLE_LOAD + } + ], + [ "onBeforeSendHeaders", + { + url: URL_HTTP_SIMPLE_LOAD + } + ], + ], {types: ["main_frame"]}, []); + chrome.tabs.update(tabId, { url: URL_HTTP_SIMPLE_LOAD }); + }, - // Navigates to a page with subresources. - // TODO(mpcomplete): add multiple subresources; requires support for - // recognizing partial ordering. - function complexLoad() { - expect([ - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "main_frame", - url: getURL("complexLoad/a.html") - } - ], - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "sub_frame", - url: getURL("complexLoad/b.html") - } - ], - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "image", - url: getURL("complexLoad/b.jpg") - } - ], - ]); - chrome.tabs.update(tabId, { url: getURL("complexLoad/a.html") }); - }, + // Navigates to a page with subresources. + // TODO(mpcomplete): add multiple subresources; requires support for + // recognizing partial ordering. + function complexLoad() { + expect([ + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "main_frame", + url: getURL("complexLoad/a.html") + } + ], + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "sub_frame", + url: getURL("complexLoad/b.html") + } + ], + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "image", + url: getURL("complexLoad/b.jpg") + } + ], + ]); + chrome.tabs.update(tabId, { url: getURL("complexLoad/a.html") }); + }, - // Navigates to a page with subresources, with a blocking handler that - // cancels the page request. The page will not load, and we should not - // see the subresources. - function complexLoadBlocking() { - expect([ - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "main_frame", - url: getURL("complexLoad/a.html") - } - ] - ], {}, ["blocking"]); - chrome.tabs.update(tabId, { url: getURL("complexLoad/a.html") }); - }, + // Navigates to a page with subresources, with a blocking handler that + // cancels the page request. The page will not load, and we should not + // see the subresources. + function complexLoadBlocking() { + expect([ + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "main_frame", + url: getURL("complexLoad/a.html") + } + ] + ], {}, ["blocking"]); + chrome.tabs.update(tabId, { url: getURL("complexLoad/a.html") }); + }, - // Loads several resources, but should only see the complexLoad main_frame - // and image due to the filter. - function complexLoadFiltered() { - expect([ - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "main_frame", - url: getURL("complexLoad/a.html") - } - ], - [ "onBeforeRequest", - { - method: "GET", - tabId: tabId, - type: "image", - url: getURL("complexLoad/b.jpg") - } - ] - ], {urls: [getURL("complexLoad/*")], - types: ["main_frame", "image"], - tabId: tabId}, []); - chrome.tabs.create({ url: getURL("simpleLoad/a.html") }, - function(newTab) { - chrome.tabs.remove(newTab.id); + // Loads several resources, but should only see the complexLoad main_frame + // and image due to the filter. + function complexLoadFiltered() { + expect([ + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "main_frame", + url: getURL("complexLoad/a.html") + } + ], + [ "onBeforeRequest", + { + method: "GET", + tabId: tabId, + type: "image", + url: getURL("complexLoad/b.jpg") + } + ] + ], {urls: [getURL("complexLoad/*")], + types: ["main_frame", "image"], + tabId: tabId}, []); + chrome.tabs.create({ url: getURL("simpleLoad/a.html") }, + function(newTab) { + chrome.tabs.remove(newTab.id); chrome.tabs.update(tabId, { url: getURL("complexLoad/a.html") }); - }); - }, - ]); -}); + }); + }, +]); </script> diff --git a/net/base/network_delegate.cc b/net/base/network_delegate.cc index 17da7a8..2ed1ea5 100644 --- a/net/base/network_delegate.cc +++ b/net/base/network_delegate.cc @@ -8,18 +8,21 @@ namespace net { -bool NetworkDelegate::NotifyBeforeURLRequest(URLRequest* request, - CompletionCallback* callback) { +int NetworkDelegate::NotifyBeforeURLRequest(URLRequest* request, + CompletionCallback* callback) { DCHECK(CalledOnValidThread()); DCHECK(request); DCHECK(callback); return OnBeforeURLRequest(request, callback); } -void NetworkDelegate::NotifySendHttpRequest(HttpRequestHeaders* headers) { +int NetworkDelegate::NotifyBeforeSendHeaders(uint64 request_id, + HttpRequestHeaders* headers, + CompletionCallback* callback) { DCHECK(CalledOnValidThread()); DCHECK(headers); - OnSendHttpRequest(headers); + DCHECK(callback); + return OnBeforeSendHeaders(request_id, headers, callback); } void NetworkDelegate::NotifyResponseStarted(URLRequest* request) { @@ -34,6 +37,11 @@ void NetworkDelegate::NotifyReadCompleted(URLRequest* request, int bytes_read) { OnReadCompleted(request, bytes_read); } +void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) { + DCHECK(request); + return OnURLRequestDestroyed(request); +} + URLRequestJob* NetworkDelegate::MaybeCreateURLRequestJob(URLRequest* request) { DCHECK(CalledOnValidThread()); DCHECK(request); diff --git a/net/base/network_delegate.h b/net/base/network_delegate.h index 284728b4..effc699 100644 --- a/net/base/network_delegate.h +++ b/net/base/network_delegate.h @@ -31,12 +31,16 @@ class NetworkDelegate : public base::NonThreadSafe { // Notification interface called by the network stack. Note that these // functions mostly forward to the private virtuals. They also add some sanity - // checking on parameters. - bool NotifyBeforeURLRequest(URLRequest* request, + // checking on parameters. See the corresponding virtuals for explanations of + // the methods and their arguments. + int NotifyBeforeURLRequest(URLRequest* request, + CompletionCallback* callback); + int NotifyBeforeSendHeaders(uint64 request_id, + HttpRequestHeaders* headers, CompletionCallback* callback); - void NotifySendHttpRequest(HttpRequestHeaders* headers); void NotifyResponseStarted(URLRequest* request); void NotifyReadCompleted(URLRequest* request, int bytes_read); + void NotifyURLRequestDestroyed(URLRequest* request); // Returns a URLRequestJob that will be used to handle the request if // non-null. @@ -51,13 +55,20 @@ class NetworkDelegate : public base::NonThreadSafe { // member functions will be called by the respective public notification // member function, which will perform basic sanity checking. - // Called before a request is sent. - virtual bool OnBeforeURLRequest(URLRequest* request, - CompletionCallback* callback) = 0; + // Called before a request is sent. The callback can be called at any time, + // but will have no effect if the request has already been cancelled or + // deleted. Returns a net status code, generally either OK to continue with + // the request or ERR_IO_PENDING if the result is not ready yet. + virtual int OnBeforeURLRequest(URLRequest* request, + CompletionCallback* callback) = 0; - // Called right before the HTTP headers are sent. Allows the delegate to - // read/write |headers| before they get sent out. - virtual void OnSendHttpRequest(HttpRequestHeaders* headers) = 0; + // Called right before the HTTP headers are sent. Allows the delegate to + // read/write |headers| before they get sent out. The callback can be called + // at any time, but will have no effect if the transaction handling this + // request has been cancelled. Returns a net status code. + virtual int OnBeforeSendHeaders(uint64 request_id, + HttpRequestHeaders* headers, + CompletionCallback* callback) = 0; // This corresponds to URLRequestDelegate::OnResponseStarted. virtual void OnResponseStarted(URLRequest* request) = 0; @@ -65,9 +76,15 @@ class NetworkDelegate : public base::NonThreadSafe { // This corresponds to URLRequestDelegate::OnReadCompleted. virtual void OnReadCompleted(URLRequest* request, int bytes_read) = 0; + // Called when an URLRequest is being destroyed. Note that the request is + // being deleted, so it's not safe to call any methods that may result in + // a virtual method call. + virtual void OnURLRequestDestroyed(URLRequest* request) = 0; + // Called before a request is sent and before a URLRequestJob is created to // handle the request. virtual URLRequestJob* OnMaybeCreateURLRequestJob(URLRequest* request) = 0; + }; } // namespace net diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc index bf29f85..201f647 100644 --- a/net/http/http_cache_transaction.cc +++ b/net/http/http_cache_transaction.cc @@ -23,10 +23,12 @@ #include "net/base/load_flags.h" #include "net/base/net_errors.h" #include "net/base/net_log.h" +#include "net/base/network_delegate.h" #include "net/base/ssl_cert_request_info.h" #include "net/base/ssl_config_service.h" #include "net/disk_cache/disk_cache.h" #include "net/http/disk_cache_based_ssl_host_info.h" +#include "net/http/http_network_session.h" #include "net/http/http_request_info.h" #include "net/http/http_response_headers.h" #include "net/http/http_transaction.h" @@ -486,6 +488,13 @@ int HttpCache::Transaction::DoLoop(int result) { case STATE_ADD_TO_ENTRY_COMPLETE: rv = DoAddToEntryComplete(rv); break; + case STATE_NOTIFY_BEFORE_SEND_HEADERS: + DCHECK_EQ(OK, rv); + rv = DoNotifyBeforeSendHeaders(); + break; + case STATE_NOTIFY_BEFORE_SEND_HEADERS_COMPLETE: + rv = DoNotifyBeforeSendHeadersComplete(rv); + break; case STATE_START_PARTIAL_CACHE_VALIDATION: DCHECK_EQ(OK, rv); rv = DoStartPartialCacheValidation(); @@ -909,6 +918,57 @@ int HttpCache::Transaction::DoAddToEntryComplete(int result) { return OK; } +int HttpCache::Transaction::DoNotifyBeforeSendHeaders() { + // Balanced in DoNotifyBeforeSendHeadersComplete. + cache_callback_->AddRef(); + next_state_ = STATE_NOTIFY_BEFORE_SEND_HEADERS_COMPLETE; + + if (cache_->GetSession() && cache_->GetSession()->network_delegate()) { + // TODO(mpcomplete): need to be able to modify these headers. + HttpRequestHeaders headers = request_->extra_headers; + return cache_->GetSession()->network_delegate()->NotifyBeforeSendHeaders( + request_->request_id, &headers, cache_callback_); + } + + return OK; +} + +int HttpCache::Transaction::DoNotifyBeforeSendHeadersComplete(int result) { + cache_callback_->Release(); // Balanced in DoNotifyBeforeSendHeaders. + + // We now have access to the cache entry. + // + // o if we are a reader for the transaction, then we can start reading the + // cache entry. + // + // o if we can read or write, then we should check if the cache entry needs + // to be validated and then issue a network request if needed or just read + // from the cache if the cache entry is already valid. + // + // o if we are set to UPDATE, then we are handling an externally + // conditionalized request (if-modified-since / if-none-match). We check + // if the request headers define a validation request. + // + if (result == net::OK) { + switch (mode_) { + case READ: + result = BeginCacheRead(); + break; + case READ_WRITE: + result = BeginPartialCacheValidation(); + break; + case UPDATE: + result = BeginExternallyConditionalizedRequest(); + break; + case WRITE: + default: + NOTREACHED(); + result = ERR_FAILED; + } + } + return result; +} + // We may end up here multiple times for a given request. int HttpCache::Transaction::DoStartPartialCacheValidation() { if (mode_ == NONE) @@ -1109,6 +1169,8 @@ int HttpCache::Transaction::DoCacheReadResponse() { int HttpCache::Transaction::DoCacheReadResponseComplete(int result) { cache_callback_->Release(); // Balance the AddRef from DoCacheReadResponse. + next_state_ = STATE_NOTIFY_BEFORE_SEND_HEADERS; + net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_READ_INFO, result); if (result != io_buf_len_ || !HttpCache::ParseResponseInfo(read_buf_->data(), io_buf_len_, @@ -1117,35 +1179,7 @@ int HttpCache::Transaction::DoCacheReadResponseComplete(int result) { return ERR_CACHE_READ_FAILURE; } - // We now have access to the cache entry. - // - // o if we are a reader for the transaction, then we can start reading the - // cache entry. - // - // o if we can read or write, then we should check if the cache entry needs - // to be validated and then issue a network request if needed or just read - // from the cache if the cache entry is already valid. - // - // o if we are set to UPDATE, then we are handling an externally - // conditionalized request (if-modified-since / if-none-match). We check - // if the request headers define a validation request. - // - switch (mode_) { - case READ: - result = BeginCacheRead(); - break; - case READ_WRITE: - result = BeginPartialCacheValidation(); - break; - case UPDATE: - result = BeginExternallyConditionalizedRequest(); - break; - case WRITE: - default: - NOTREACHED(); - result = ERR_FAILED; - } - return result; + return OK; } int HttpCache::Transaction::DoCacheWriteResponse() { diff --git a/net/http/http_cache_transaction.h b/net/http/http_cache_transaction.h index 81160d5..17d7ead 100644 --- a/net/http/http_cache_transaction.h +++ b/net/http/http_cache_transaction.h @@ -141,6 +141,8 @@ class HttpCache::Transaction : public HttpTransaction { STATE_DOOM_ENTRY_COMPLETE, STATE_ADD_TO_ENTRY, STATE_ADD_TO_ENTRY_COMPLETE, + STATE_NOTIFY_BEFORE_SEND_HEADERS, + STATE_NOTIFY_BEFORE_SEND_HEADERS_COMPLETE, STATE_START_PARTIAL_CACHE_VALIDATION, STATE_COMPLETE_PARTIAL_CACHE_VALIDATION, STATE_UPDATE_CACHED_RESPONSE, @@ -195,6 +197,8 @@ class HttpCache::Transaction : public HttpTransaction { int DoDoomEntryComplete(int result); int DoAddToEntry(); int DoAddToEntryComplete(int result); + int DoNotifyBeforeSendHeaders(); + int DoNotifyBeforeSendHeadersComplete(int result); int DoStartPartialCacheValidation(); int DoCompletePartialCacheValidation(int result); int DoUpdateCachedResponse(); diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index fb197f8..6d1e3d5 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc @@ -99,6 +99,9 @@ HttpNetworkTransaction::HttpNetworkTransaction(HttpNetworkSession* session) : pending_auth_target_(HttpAuth::AUTH_NONE), ALLOW_THIS_IN_INITIALIZER_LIST( io_callback_(this, &HttpNetworkTransaction::OnIOComplete)), + ALLOW_THIS_IN_INITIALIZER_LIST(delegate_callback_( + new CancelableCompletionCallback<HttpNetworkTransaction>( + this, &HttpNetworkTransaction::OnIOComplete))), user_callback_(NULL), session_(session), request_(NULL), @@ -146,6 +149,8 @@ HttpNetworkTransaction::~HttpNetworkTransaction() { } } } + + delegate_callback_->Cancel(); } int HttpNetworkTransaction::Start(const HttpRequestInfo* request_info, @@ -514,9 +519,16 @@ int HttpNetworkTransaction::DoLoop(int result) { case STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE: rv = DoGenerateServerAuthTokenComplete(rv); break; - case STATE_SEND_REQUEST: + case STATE_BUILD_REQUEST: DCHECK_EQ(OK, rv); net_log_.BeginEvent(NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST, NULL); + rv = DoBuildRequest(); + break; + case STATE_BUILD_REQUEST_COMPLETE: + rv = DoBuildRequestComplete(rv); + break; + case STATE_SEND_REQUEST: + DCHECK_EQ(OK, rv); rv = DoSendRequest(); break; case STATE_SEND_REQUEST_COMPLETE: @@ -661,38 +673,58 @@ int HttpNetworkTransaction::DoGenerateServerAuthToken() { int HttpNetworkTransaction::DoGenerateServerAuthTokenComplete(int rv) { DCHECK_NE(ERR_IO_PENDING, rv); if (rv == OK) - next_state_ = STATE_SEND_REQUEST; + next_state_ = STATE_BUILD_REQUEST; return rv; } -int HttpNetworkTransaction::DoSendRequest() { - next_state_ = STATE_SEND_REQUEST_COMPLETE; +int HttpNetworkTransaction::DoBuildRequest() { + next_state_ = STATE_BUILD_REQUEST_COMPLETE; - UploadDataStream* request_body = NULL; + request_body_.reset(NULL); if (request_->upload_data) { int error_code; - request_body = UploadDataStream::Create(request_->upload_data, &error_code); - if (!request_body) + request_body_.reset( + UploadDataStream::Create(request_->upload_data, &error_code)); + if (!request_body_.get()) return error_code; } + headers_valid_ = false; + // This is constructed lazily (instead of within our Start method), so that // we have proxy info available. if (request_headers_.IsEmpty()) { - bool using_proxy = (proxy_info_.is_http()|| proxy_info_.is_https()) && + bool using_proxy = (proxy_info_.is_http() || proxy_info_.is_https()) && !is_https_request(); - HttpUtil::BuildRequestHeaders(request_, request_body, auth_controllers_, + HttpUtil::BuildRequestHeaders(request_, request_body_.get(), + auth_controllers_, ShouldApplyServerAuth(), ShouldApplyProxyAuth(), using_proxy, &request_headers_); + } - if (session_->network_delegate()) - session_->network_delegate()->NotifySendHttpRequest(&request_headers_); + delegate_callback_->AddRef(); // balanced in DoSendRequestComplete + if (session_->network_delegate()) { + return session_->network_delegate()->NotifyBeforeSendHeaders( + request_->request_id, &request_headers_, delegate_callback_); } - headers_valid_ = false; - return stream_->SendRequest(request_headers_, request_body, &response_, - &io_callback_); + return OK; +} + +int HttpNetworkTransaction::DoBuildRequestComplete(int result) { + delegate_callback_->Release(); // balanced in DoBuildRequest +
+ if (result == OK)
+ next_state_ = STATE_SEND_REQUEST;
+ return result; +} + +int HttpNetworkTransaction::DoSendRequest() { + next_state_ = STATE_SEND_REQUEST_COMPLETE; + + return stream_->SendRequest( + request_headers_, request_body_.release(), &response_, &io_callback_); } int HttpNetworkTransaction::DoSendRequestComplete(int result) { @@ -1238,6 +1270,8 @@ std::string HttpNetworkTransaction::DescribeState(State state) { switch (state) { STATE_CASE(STATE_CREATE_STREAM); STATE_CASE(STATE_CREATE_STREAM_COMPLETE); + STATE_CASE(STATE_BUILD_REQUEST); + STATE_CASE(STATE_BUILD_REQUEST_COMPLETE); STATE_CASE(STATE_SEND_REQUEST); STATE_CASE(STATE_SEND_REQUEST_COMPLETE); STATE_CASE(STATE_READ_HEADERS); diff --git a/net/http/http_network_transaction.h b/net/http/http_network_transaction.h index 2f55f4f..414b1f9 100644 --- a/net/http/http_network_transaction.h +++ b/net/http/http_network_transaction.h @@ -94,6 +94,8 @@ class HttpNetworkTransaction : public HttpTransaction, STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE, STATE_GENERATE_SERVER_AUTH_TOKEN, STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE, + STATE_BUILD_REQUEST, + STATE_BUILD_REQUEST_COMPLETE, STATE_SEND_REQUEST, STATE_SEND_REQUEST_COMPLETE, STATE_READ_HEADERS, @@ -125,6 +127,8 @@ class HttpNetworkTransaction : public HttpTransaction, int DoGenerateProxyAuthTokenComplete(int result); int DoGenerateServerAuthToken(); int DoGenerateServerAuthTokenComplete(int result); + int DoBuildRequest(); + int DoBuildRequestComplete(int result); int DoSendRequest(); int DoSendRequestComplete(int result); int DoReadHeaders(); @@ -217,7 +221,10 @@ class HttpNetworkTransaction : public HttpTransaction, HttpAuth::Target pending_auth_target_; CompletionCallbackImpl<HttpNetworkTransaction> io_callback_; + scoped_refptr<CancelableCompletionCallback<HttpNetworkTransaction> > + delegate_callback_; CompletionCallback* user_callback_; + scoped_ptr<UploadDataStream> request_body_; scoped_refptr<HttpNetworkSession> session_; diff --git a/net/http/http_request_info.cc b/net/http/http_request_info.cc index 8ab3096..18c1b84 100644 --- a/net/http/http_request_info.cc +++ b/net/http/http_request_info.cc @@ -9,7 +9,8 @@ namespace net { HttpRequestInfo::HttpRequestInfo() : load_flags(0), priority(LOWEST), - motivation(NORMAL_MOTIVATION) { + motivation(NORMAL_MOTIVATION), + request_id(0) { } HttpRequestInfo::~HttpRequestInfo() {} diff --git a/net/http/http_request_info.h b/net/http/http_request_info.h index 70c1300..b906cf5 100644 --- a/net/http/http_request_info.h +++ b/net/http/http_request_info.h @@ -52,6 +52,10 @@ struct HttpRequestInfo { // The motivation behind this request. RequestMotivation motivation; + + // An optional globally unique identifier for this request for use by the + // consumer. 0 is invalid. + uint64 request_id; }; } // namespace net diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc index 17e23a5..5c437c2 100644 --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc @@ -44,7 +44,8 @@ void StripPostSpecificHeaders(HttpRequestHeaders* headers) { } // This counter keeps track of the identifiers used for URL requests so far. -uint64 g_next_url_request_identifier = 0; +// 0 is reserved to represent an invalid ID. +uint64 g_next_url_request_identifier = 1; // This lock protects g_next_url_request_identifier. base::Lock g_next_url_request_identifier_lock; @@ -130,6 +131,9 @@ URLRequest::URLRequest(const GURL& url, Delegate* delegate) } URLRequest::~URLRequest() { + if (context_ && context_->network_delegate()) + context_->network_delegate()->NotifyURLRequestDestroyed(this); + if (before_request_callback_) before_request_callback_->Cancel(); @@ -362,7 +366,7 @@ void URLRequest::Start() { before_request_callback_ = new CancelableCompletionCallback<URLRequest>( this, &URLRequest::BeforeRequestComplete); if (context_->network_delegate()->NotifyBeforeURLRequest( - this, before_request_callback_)) { + this, before_request_callback_) == net::ERR_IO_PENDING) { before_request_callback_->AddRef(); // balanced in BeforeRequestComplete net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_EXTENSION, NULL); return; // paused diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 1a3e28e..b3eaa0c 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -764,6 +764,7 @@ void URLRequestHttpJob::Start() { request_info_.method = request_->method(); request_info_.load_flags = request_->load_flags(); request_info_.priority = request_->priority(); + request_info_.request_id = request_->identifier(); if (request_->context()) { request_info_.extra_headers.SetHeaderIfMissing( diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc index d13ee06..e3627c4 100644 --- a/net/url_request/url_request_test_util.cc +++ b/net/url_request/url_request_test_util.cc @@ -296,13 +296,16 @@ TestNetworkDelegate::TestNetworkDelegate() TestNetworkDelegate::~TestNetworkDelegate() {} -bool TestNetworkDelegate::OnBeforeURLRequest( +int TestNetworkDelegate::OnBeforeURLRequest( net::URLRequest* request, net::CompletionCallback* callback) { - return false; + return net::OK; } -void TestNetworkDelegate::OnSendHttpRequest( - net::HttpRequestHeaders* headers) { +int TestNetworkDelegate::OnBeforeSendHeaders( + uint64 request_id, + net::HttpRequestHeaders* headers, + net::CompletionCallback* callback) { + return net::OK; } void TestNetworkDelegate::OnResponseStarted(net::URLRequest* request) { @@ -320,6 +323,9 @@ void TestNetworkDelegate::OnReadCompleted(net::URLRequest* request, } } +void TestNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) { +} + net::URLRequestJob* TestNetworkDelegate::OnMaybeCreateURLRequestJob( net::URLRequest* request) { return NULL; diff --git a/net/url_request/url_request_test_util.h b/net/url_request/url_request_test_util.h index 6dcd39d..789c82a 100644 --- a/net/url_request/url_request_test_util.h +++ b/net/url_request/url_request_test_util.h @@ -201,11 +201,14 @@ class TestNetworkDelegate : public net::NetworkDelegate { private: // net::NetworkDelegate: - virtual bool OnBeforeURLRequest(net::URLRequest* request, + virtual int OnBeforeURLRequest(net::URLRequest* request, + net::CompletionCallback* callback); + virtual int OnBeforeSendHeaders(uint64 request_id, + net::HttpRequestHeaders* headers, net::CompletionCallback* callback); - virtual void OnSendHttpRequest(net::HttpRequestHeaders* headers); virtual void OnResponseStarted(net::URLRequest* request); virtual void OnReadCompleted(net::URLRequest* request, int bytes_read); + virtual void OnURLRequestDestroyed(net::URLRequest* request); virtual net::URLRequestJob* OnMaybeCreateURLRequestJob( net::URLRequest* request); diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 4f454d0..d12bc8a 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -239,10 +239,10 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateTunnelConnectionFailed) { TestDelegate d; { + TestNetworkDelegate network_delegate; // must outlive URLRequest URLRequest r(GURL("https://www.redirect.com/"), &d); scoped_refptr<TestURLRequestContext> context( new TestURLRequestContext(test_server_.host_port_pair().ToString())); - TestNetworkDelegate network_delegate; context->set_network_delegate(&network_delegate); r.set_context(context); @@ -2403,13 +2403,13 @@ TEST_F(URLRequestTest, Identifiers) { // delegate. TEST_F(URLRequestTest, NetworkDelegateProxyError) { TestDelegate d; + TestNetworkDelegate network_delegate; TestURLRequest req(GURL("http://example.com"), &d); req.set_method("GET"); scoped_ptr<MockHostResolverBase> host_resolver( new MockHostResolver); host_resolver->rules()->AddSimulatedFailure("*"); - TestNetworkDelegate network_delegate; scoped_refptr<TestURLRequestContext> context( new TestURLRequestContext("myproxy:70", host_resolver.release())); context->set_network_delegate(&network_delegate); |