chromium/ios/web/common/referrer_util.h

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_COMMON_REFERRER_UTIL_H_
#define IOS_WEB_COMMON_REFERRER_UTIL_H_

#include <string>

#include "ios/web/public/navigation/referrer.h"
#include "net/url_request/referrer_policy.h"

class GURL;

namespace web {

// Returns the string that should be sent as the Referer header value for
// navigating to `destination` from the given referrer, taking the referrer
// policy into account. Returns an empty string if no Referer should be sent.
std::string ReferrerHeaderValueForNavigation(const GURL& destination,
                                             const web::Referrer& referrer);

// Returns the policy that should be used to process subsequent forwards, if
// any.
// TODO(stuartmorgan): Replace this with ReferrerForNavigation, since it should
// always be used with ReferrerHeaderValueForNavigation anyway.
net::ReferrerPolicy PolicyForNavigation(const GURL& destination,
                                        const web::Referrer& referrer);

// Returns the WebReferrerPolicy corresponding to the given policy string
// (e.g., 'always', 'never', 'origin', 'default'). The string is assumed to
// be lowercase already. Unrecognized values will be treated as Default.
ReferrerPolicy ReferrerPolicyFromString(const std::string& policy);

}  // namespace web

#endif  // IOS_WEB_COMMON_REFERRER_UTIL_H_