// Generated by the proto_extras plugin. DO NOT EDIT!
// source: components/optimization_guide/proto/features/common_quality_data.proto

#include "components/optimization_guide/proto/features/common_quality_data.ostream.h"

#include <ostream>


#include "base/values.h"
#include "components/optimization_guide/proto/features/common_quality_data.to_value.h"


namespace optimization_guide {
namespace proto {
std::ostream& operator<<(std::ostream& out, const FloatArray& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Embedding& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXTreeUpdate& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXTreeData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXNodeData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXAttribute& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXIntList& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXStringList& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AXRelativeBounds& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const PageContext& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AnnotatedPageContent& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ContentNode& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ContentAttributes& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Geometry& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const BoundingRect& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const InteractionInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ScrollerInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const BoundingSize& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TextInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TextStyle& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ImageInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const SecurityOrigin& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const SVGRootData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const CanvasData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const VideoData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AnchorData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FormInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FormControlData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const SelectOption& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TableData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const IframeData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const IframeData_RedactedFrameMetadata& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FrameData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FrameInteractionInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Selection& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const DocumentIdentifier& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const PaidContentMetadata& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const MediaData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const MediaTranscript& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ScriptTool& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ScriptToolAnnotations& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ScriptToolResult& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TableRowData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const PageInteractionInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Point& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const PopupWindow& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ProfileInformation& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AutofillInformation& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const GeminiInChromePageMetadata& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const ScreenshotInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const IframeInfo& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AutofillGlobalId& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FormData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FormFieldData& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TableRow& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TabGroupMinimal& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TabGroup& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Tab& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const SiteEngagementEntry& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const SiteEngagement& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Coordinate& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TimeDuration& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const TimeZone& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const DateTime& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const MetaTag& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const FrameMetadata& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const PageMetadata& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const DocumentSelection& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AgentContainerConfig& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const LocationRule& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Location& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Origin& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const Site& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const AnySite& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const RuleMetadata& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
std::ostream& operator<<(std::ostream& out, const NavigationSource& message) {
  // This relies on ToValue() from *.to_value.h.
  return out << ToValue(message).DebugString();
}
}  // namespace proto
}  // namespace optimization_guide

