| Index: chrome/browser/extensions/api/web_request/web_request_api_helpers.h
|
| diff --git a/chrome/browser/extensions/api/web_request/web_request_api_helpers.h b/chrome/browser/extensions/api/web_request/web_request_api_helpers.h
|
| deleted file mode 100644
|
| index b5a25771f6e01d66fef932e4a931b0f516838de0..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/api/web_request/web_request_api_helpers.h
|
| +++ /dev/null
|
| @@ -1,317 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Helper classes and functions used for the WebRequest API.
|
| -
|
| -#ifndef CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_WEB_REQUEST_API_HELPERS_H_
|
| -#define CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_WEB_REQUEST_API_HELPERS_H_
|
| -
|
| -#include <list>
|
| -#include <set>
|
| -#include <string>
|
| -
|
| -#include "base/memory/linked_ptr.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/time/time.h"
|
| -#include "extensions/browser/warning_set.h"
|
| -#include "net/base/auth.h"
|
| -#include "net/http/http_request_headers.h"
|
| -#include "net/http/http_response_headers.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace base {
|
| -class ListValue;
|
| -class Value;
|
| -}
|
| -
|
| -namespace extensions {
|
| -class Extension;
|
| -}
|
| -
|
| -namespace net {
|
| -class BoundNetLog;
|
| -class URLRequest;
|
| -}
|
| -
|
| -namespace extension_web_request_api_helpers {
|
| -
|
| -typedef std::pair<std::string, std::string> ResponseHeader;
|
| -typedef std::vector<ResponseHeader> ResponseHeaders;
|
| -
|
| -// Data container for RequestCookies as defined in the declarative WebRequest
|
| -// API definition.
|
| -struct RequestCookie {
|
| - RequestCookie();
|
| - ~RequestCookie();
|
| - scoped_ptr<std::string> name;
|
| - scoped_ptr<std::string> value;
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(RequestCookie);
|
| -};
|
| -
|
| -bool NullableEquals(const RequestCookie* a, const RequestCookie* b);
|
| -
|
| -// Data container for ResponseCookies as defined in the declarative WebRequest
|
| -// API definition.
|
| -struct ResponseCookie {
|
| - ResponseCookie();
|
| - ~ResponseCookie();
|
| - scoped_ptr<std::string> name;
|
| - scoped_ptr<std::string> value;
|
| - scoped_ptr<std::string> expires;
|
| - scoped_ptr<int> max_age;
|
| - scoped_ptr<std::string> domain;
|
| - scoped_ptr<std::string> path;
|
| - scoped_ptr<bool> secure;
|
| - scoped_ptr<bool> http_only;
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(ResponseCookie);
|
| -};
|
| -
|
| -bool NullableEquals(const ResponseCookie* a, const ResponseCookie* b);
|
| -
|
| -// Data container for FilterResponseCookies as defined in the declarative
|
| -// WebRequest API definition.
|
| -struct FilterResponseCookie : ResponseCookie {
|
| - FilterResponseCookie();
|
| - ~FilterResponseCookie();
|
| - scoped_ptr<int> age_lower_bound;
|
| - scoped_ptr<int> age_upper_bound;
|
| - scoped_ptr<bool> session_cookie;
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(FilterResponseCookie);
|
| -};
|
| -
|
| -bool NullableEquals(const FilterResponseCookie* a,
|
| - const FilterResponseCookie* b);
|
| -
|
| -enum CookieModificationType {
|
| - ADD,
|
| - EDIT,
|
| - REMOVE,
|
| -};
|
| -
|
| -struct RequestCookieModification {
|
| - RequestCookieModification();
|
| - ~RequestCookieModification();
|
| - CookieModificationType type;
|
| - // Used for EDIT and REMOVE. NULL for ADD.
|
| - scoped_ptr<RequestCookie> filter;
|
| - // Used for ADD and EDIT. NULL for REMOVE.
|
| - scoped_ptr<RequestCookie> modification;
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(RequestCookieModification);
|
| -};
|
| -
|
| -bool NullableEquals(const RequestCookieModification* a,
|
| - const RequestCookieModification* b);
|
| -
|
| -struct ResponseCookieModification {
|
| - ResponseCookieModification();
|
| - ~ResponseCookieModification();
|
| - CookieModificationType type;
|
| - // Used for EDIT and REMOVE.
|
| - scoped_ptr<FilterResponseCookie> filter;
|
| - // Used for ADD and EDIT.
|
| - scoped_ptr<ResponseCookie> modification;
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(ResponseCookieModification);
|
| -};
|
| -
|
| -bool NullableEquals(const ResponseCookieModification* a,
|
| - const ResponseCookieModification* b);
|
| -
|
| -typedef std::vector<linked_ptr<RequestCookieModification> >
|
| - RequestCookieModifications;
|
| -typedef std::vector<linked_ptr<ResponseCookieModification> >
|
| - ResponseCookieModifications;
|
| -
|
| -// Contains the modification an extension wants to perform on an event.
|
| -struct EventResponseDelta {
|
| - // ID of the extension that sent this response.
|
| - std::string extension_id;
|
| -
|
| - // The time that the extension was installed. Used for deciding order of
|
| - // precedence in case multiple extensions respond with conflicting
|
| - // decisions.
|
| - base::Time extension_install_time;
|
| -
|
| - // Response values. These are mutually exclusive.
|
| - bool cancel;
|
| - GURL new_url;
|
| -
|
| - // Newly introduced or overridden request headers.
|
| - net::HttpRequestHeaders modified_request_headers;
|
| -
|
| - // Keys of request headers to be deleted.
|
| - std::vector<std::string> deleted_request_headers;
|
| -
|
| - // Headers that were added to the response. A modification of a header
|
| - // corresponds to a deletion and subsequent addition of the new header.
|
| - ResponseHeaders added_response_headers;
|
| -
|
| - // Headers that were deleted from the response.
|
| - ResponseHeaders deleted_response_headers;
|
| -
|
| - // Authentication Credentials to use.
|
| - scoped_ptr<net::AuthCredentials> auth_credentials;
|
| -
|
| - // Modifications to cookies in request headers.
|
| - RequestCookieModifications request_cookie_modifications;
|
| -
|
| - // Modifications to cookies in response headers.
|
| - ResponseCookieModifications response_cookie_modifications;
|
| -
|
| - // Messages that shall be sent to the background/event/... pages of the
|
| - // extension.
|
| - std::set<std::string> messages_to_extension;
|
| -
|
| - EventResponseDelta(const std::string& extension_id,
|
| - const base::Time& extension_install_time);
|
| - ~EventResponseDelta();
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(EventResponseDelta);
|
| -};
|
| -
|
| -typedef std::list<linked_ptr<EventResponseDelta> > EventResponseDeltas;
|
| -
|
| -// Comparison operator that returns true if the extension that caused
|
| -// |a| was installed after the extension that caused |b|.
|
| -bool InDecreasingExtensionInstallationTimeOrder(
|
| - const linked_ptr<EventResponseDelta>& a,
|
| - const linked_ptr<EventResponseDelta>& b);
|
| -
|
| -// Converts a string to a list of integers, each in 0..255. Ownership
|
| -// of the created list is passed to the caller.
|
| -base::ListValue* StringToCharList(const std::string& s);
|
| -
|
| -// Converts a list of integer values between 0 and 255 into a string |*out|.
|
| -// Returns true if the conversion was successful.
|
| -bool CharListToString(const base::ListValue* list, std::string* out);
|
| -
|
| -// The following functions calculate and return the modifications to requests
|
| -// commanded by extension handlers. All functions take the id of the extension
|
| -// that commanded a modification, the installation time of this extension (used
|
| -// for defining a precedence in conflicting modifications) and whether the
|
| -// extension requested to |cancel| the request. Other parameters depend on a
|
| -// the signal handler. Ownership of the returned object is passed to the caller.
|
| -
|
| -EventResponseDelta* CalculateOnBeforeRequestDelta(
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time,
|
| - bool cancel,
|
| - const GURL& new_url);
|
| -EventResponseDelta* CalculateOnBeforeSendHeadersDelta(
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time,
|
| - bool cancel,
|
| - net::HttpRequestHeaders* old_headers,
|
| - net::HttpRequestHeaders* new_headers);
|
| -EventResponseDelta* CalculateOnHeadersReceivedDelta(
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time,
|
| - bool cancel,
|
| - const GURL& new_url,
|
| - const net::HttpResponseHeaders* old_response_headers,
|
| - ResponseHeaders* new_response_headers);
|
| -// Destructively moves the auth credentials from |auth_credentials| to the
|
| -// returned EventResponseDelta.
|
| -EventResponseDelta* CalculateOnAuthRequiredDelta(
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time,
|
| - bool cancel,
|
| - scoped_ptr<net::AuthCredentials>* auth_credentials);
|
| -
|
| -// These functions merge the responses (the |deltas|) of request handlers.
|
| -// The |deltas| need to be sorted in decreasing order of precedence of
|
| -// extensions. In case extensions had |deltas| that could not be honored, their
|
| -// IDs are reported in |conflicting_extensions|. NetLog events that shall be
|
| -// reported will be stored in |event_log_entries|.
|
| -
|
| -// Stores in |canceled| whether any extension wanted to cancel the request.
|
| -void MergeCancelOfResponses(
|
| - const EventResponseDeltas& deltas,
|
| - bool* canceled,
|
| - const net::BoundNetLog* net_log);
|
| -// Stores in |*new_url| the redirect request of the extension with highest
|
| -// precedence. Extensions that did not command to redirect the request are
|
| -// ignored in this logic.
|
| -void MergeRedirectUrlOfResponses(
|
| - const EventResponseDeltas& deltas,
|
| - GURL* new_url,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -// Stores in |*new_url| the redirect request of the extension with highest
|
| -// precedence. Extensions that did not command to redirect the request are
|
| -// ignored in this logic.
|
| -void MergeOnBeforeRequestResponses(
|
| - const EventResponseDeltas& deltas,
|
| - GURL* new_url,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -// Modifies the "Cookie" header in |request_headers| according to
|
| -// |deltas.request_cookie_modifications|. Conflicts are currently ignored
|
| -// silently.
|
| -void MergeCookiesInOnBeforeSendHeadersResponses(
|
| - const EventResponseDeltas& deltas,
|
| - net::HttpRequestHeaders* request_headers,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -// Modifies the headers in |request_headers| according to |deltas|. Conflicts
|
| -// are tried to be resolved.
|
| -void MergeOnBeforeSendHeadersResponses(
|
| - const EventResponseDeltas& deltas,
|
| - net::HttpRequestHeaders* request_headers,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -// Modifies the "Set-Cookie" headers in |override_response_headers| according to
|
| -// |deltas.response_cookie_modifications|. If |override_response_headers| is
|
| -// NULL, a copy of |original_response_headers| is created. Conflicts are
|
| -// currently ignored silently.
|
| -void MergeCookiesInOnHeadersReceivedResponses(
|
| - const EventResponseDeltas& deltas,
|
| - const net::HttpResponseHeaders* original_response_headers,
|
| - scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -// Stores a copy of |original_response_header| into |override_response_headers|
|
| -// that is modified according to |deltas|. If |deltas| does not instruct to
|
| -// modify the response headers, |override_response_headers| remains empty.
|
| -// Extension-initiated redirects are written to |override_response_headers|
|
| -// (to request redirection) and |*allowed_unsafe_redirect_url| (to make sure
|
| -// that the request is not cancelled with net::ERR_UNSAFE_REDIRECT).
|
| -void MergeOnHeadersReceivedResponses(
|
| - const EventResponseDeltas& deltas,
|
| - const net::HttpResponseHeaders* original_response_headers,
|
| - scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
|
| - GURL* allowed_unsafe_redirect_url,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -// Merge the responses of blocked onAuthRequired handlers. The first
|
| -// registered listener that supplies authentication credentials in a response,
|
| -// if any, will have its authentication credentials used. |request| must be
|
| -// non-NULL, and contain |deltas| that are sorted in decreasing order of
|
| -// precedence.
|
| -// Returns whether authentication credentials are set.
|
| -bool MergeOnAuthRequiredResponses(
|
| - const EventResponseDeltas& deltas,
|
| - net::AuthCredentials* auth_credentials,
|
| - extensions::WarningSet* conflicting_extensions,
|
| - const net::BoundNetLog* net_log);
|
| -
|
| -// Triggers clearing each renderer's in-memory cache the next time it navigates.
|
| -void ClearCacheOnNavigation();
|
| -
|
| -// Tells renderer processes that the web request or declarative web request
|
| -// API has been used by |extension| in browser_context |browser_context_id| to
|
| -// collect UMA statistics on Page Load Times. Needs to be called on the UI
|
| -// thread.
|
| -void NotifyWebRequestAPIUsed(
|
| - void* browser_context_id,
|
| - scoped_refptr<const extensions::Extension> extension);
|
| -
|
| -} // namespace extension_web_request_api_helpers
|
| -
|
| -#endif // CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_WEB_REQUEST_API_HELPERS_H_
|
|
|