chromium/ios/web/navigation/referrer.cc

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

#include "ios/web/public/navigation/referrer.h"

namespace web {

std::ostream& operator<<(std::ostream& stream, ReferrerPolicy policy) {
  switch (policy) {
    case ReferrerPolicyAlways:
      return stream << "ReferrerPolicyAlways";

    case ReferrerPolicyDefault:
      return stream << "ReferrerPolicyDefault";

    case ReferrerPolicyNoReferrerWhenDowngrade:
      return stream << "ReferrerPolicyNoReferrerWhenDowngrade";

    case ReferrerPolicyNever:
      return stream << "ReferrerPolicyNever";

    case ReferrerPolicyOrigin:
      return stream << "ReferrerPolicyOrigin";

    case ReferrerPolicyOriginWhenCrossOrigin:
      return stream << "ReferrerPolicyOriginWhenCrossOrigin";

    case ReferrerPolicySameOrigin:
      return stream << "ReferrerPolicySameOrigin";

    case ReferrerPolicyStrictOrigin:
      return stream << "ReferrerPolicyStrictOrigin";

    case ReferrerPolicyStrictOriginWhenCrossOrigin:
      return stream << "ReferrerPolicyStrictOriginWhenCrossOrigin";
  }
}

bool operator==(const Referrer& lhs, const Referrer& rhs) {
  return lhs.url == rhs.url && lhs.policy == rhs.policy;
}

bool operator!=(const Referrer& lhs, const Referrer& rhs) {
  return lhs.url != rhs.url || lhs.policy != rhs.policy;
}

std::ostream& operator<<(std::ostream& stream, const Referrer& referrer) {
  return stream << "Referrer{ url = \"" << referrer.url << "\", "
                << "policy = " << referrer.policy << " }";
}

}  // namespace web