| Index: net/url_request/url_request.h
 | 
| diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h
 | 
| index e5b06ad0c0e6535794763bb1c7a6939b11681ddd..0dc5cacbdf5112e2138acf554817d6d5b18af22a 100644
 | 
| --- a/net/url_request/url_request.h
 | 
| +++ b/net/url_request/url_request.h
 | 
| @@ -87,25 +87,30 @@ class NET_EXPORT URLRequest : public base::SupportsUserData {
 | 
|    // setting the initial Referer, and the ReferrerPolicy only controls
 | 
|    // what happens to the Referer while following redirects.
 | 
|    enum ReferrerPolicy {
 | 
| -    // Clear the referrer header if the protocol changes from HTTPS to
 | 
| -    // HTTP. This is the default behavior of URLRequest.
 | 
| +    // Clear the referrer header if the header value is HTTPS but the request
 | 
| +    // destination is HTTP. This is the default behavior of URLRequest.
 | 
|      CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
 | 
| -    // A slight variant on
 | 
| -    // CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE: If the
 | 
| -    // request downgrades from HTTPS to HTTP, the referrer will be
 | 
| -    // cleared. If the request transitions cross-origin (but does not
 | 
| -    // downgrade), the referrer's granularity will be reduced (currently
 | 
| -    // stripped down to an origin rather than a full URL). Same-origin
 | 
| -    // requests will send the full referrer.
 | 
| +    // A slight variant on CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE:
 | 
| +    // If the request destination is HTTP, an HTTPS referrer will be cleared. If
 | 
| +    // the request's destination is cross-origin with the referrer (but does not
 | 
| +    // downgrade), the referrer's granularity will be stripped down to an origin
 | 
| +    // rather than a full URL. Same-origin requests will send the full referrer.
 | 
|      REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
 | 
| -    // Strip the referrer down to an origin upon cross-origin navigation.
 | 
| +    // Strip the referrer down to an origin when the origin of the referrer is
 | 
| +    // different from the destination's origin.
 | 
|      ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN,
 | 
|      // Never change the referrer.
 | 
|      NEVER_CLEAR_REFERRER,
 | 
|      // Strip the referrer down to the origin regardless of the redirect
 | 
|      // location.
 | 
|      ORIGIN,
 | 
| -    // Always clear the referrer regardless of the redirect location.
 | 
| +    // Clear the referrer when the request's referrer is cross-origin with
 | 
| +    // the request's destination.
 | 
| +    CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN,
 | 
| +    // Strip the referrer down to the origin, but clear it entirely if the
 | 
| +    // referrer value is HTTPS and the destination is HTTP.
 | 
| +    ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
 | 
| +    // Always clear the referrer regardless of the request destination.
 | 
|      NO_REFERRER,
 | 
|      MAX_REFERRER_POLICY
 | 
|    };
 | 
| @@ -314,16 +319,22 @@ class NET_EXPORT URLRequest : public base::SupportsUserData {
 | 
|    const std::string& method() const { return method_; }
 | 
|    void set_method(const std::string& method);
 | 
|  
 | 
| -  // The referrer URL for the request.  This header may actually be suppressed
 | 
| -  // from the underlying network request for security reasons (e.g., a HTTPS
 | 
| -  // URL will not be sent as the referrer for a HTTP request).  The referrer
 | 
| -  // may only be changed before Start() is called.
 | 
| +  // The referrer URL for the request
 | 
|    const std::string& referrer() const { return referrer_; }
 | 
| -  // Referrer is sanitized to remove URL fragment, user name and password.
 | 
| +  // Sets the referrer URL for the request. Can only be changed before Start()
 | 
| +  // is called. |referrer| is sanitized to remove URL fragment, user name and
 | 
| +  // password. If a referrer policy is set via set_referrer_policy(), then
 | 
| +  // |referrer| should obey the policy; if it doesn't, it will be cleared when
 | 
| +  // the request is started. The referrer URL may be suppressed or changed
 | 
| +  // during the course of the request, for example because of a referrer policy
 | 
| +  // set with set_referrer_policy().
 | 
|    void SetReferrer(const std::string& referrer);
 | 
|  
 | 
|    // The referrer policy to apply when updating the referrer during redirects.
 | 
| -  // The referrer policy may only be changed before Start() is called.
 | 
| +  // The referrer policy may only be changed before Start() is called. Any
 | 
| +  // referrer set via SetReferrer() is expected to obey the policy set via
 | 
| +  // set_referrer_policy(); otherwise the referrer will be cleared when the
 | 
| +  // request is started.
 | 
|    ReferrerPolicy referrer_policy() const { return referrer_policy_; }
 | 
|    void set_referrer_policy(ReferrerPolicy referrer_policy);
 | 
|  
 | 
| 
 |