// cc/mojom/render_surface_reason.mojom-shared.cc is auto generated by mojom_bindings_generator.py, do not edit

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

#include "cc/mojom/render_surface_reason.mojom-shared.h"
#include <ostream>
#include <utility>
#include "base/strings/stringprintf.h"
#include "mojo/public/cpp/bindings/lib/validate_params.h"
#include "mojo/public/cpp/bindings/lib/validation_errors.h"
#include "mojo/public/cpp/bindings/lib/validation_util.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value.h"

#include "cc/mojom/render_surface_reason.mojom-params-data.h"
namespace cc {
namespace mojom {

NOINLINE static const char* RenderSurfaceReasonToStringHelper(RenderSurfaceReason value) {
  // Defined in a helper function to ensure that Clang generates a lookup table.
  switch(value) {
    case RenderSurfaceReason::kNone:
      return "kNone";
    case RenderSurfaceReason::kRoot:
      return "kRoot";
    case RenderSurfaceReason::k3dTransformFlattening:
      return "k3dTransformFlattening";
    case RenderSurfaceReason::kBackdropScope:
      return "kBackdropScope";
    case RenderSurfaceReason::kBlendMode:
      return "kBlendMode";
    case RenderSurfaceReason::kBlendModeDstIn:
      return "kBlendModeDstIn";
    case RenderSurfaceReason::kOpacity:
      return "kOpacity";
    case RenderSurfaceReason::kOpacityAnimation:
      return "kOpacityAnimation";
    case RenderSurfaceReason::kFilter:
      return "kFilter";
    case RenderSurfaceReason::kFilterAnimation:
      return "kFilterAnimation";
    case RenderSurfaceReason::kBackdropFilter:
      return "kBackdropFilter";
    case RenderSurfaceReason::kBackdropFilterAnimation:
      return "kBackdropFilterAnimation";
    case RenderSurfaceReason::kRoundedCorner:
      return "kRoundedCorner";
    case RenderSurfaceReason::kClipPath:
      return "kClipPath";
    case RenderSurfaceReason::kClipAxisAlignment:
      return "kClipAxisAlignment";
    case RenderSurfaceReason::kMask:
      return "kMask";
    case RenderSurfaceReason::kTrilinearFiltering:
      return "kTrilinearFiltering";
    case RenderSurfaceReason::kCache:
      return "kCache";
    case RenderSurfaceReason::kCopyRequest:
      return "kCopyRequest";
    case RenderSurfaceReason::kMirrored:
      return "kMirrored";
    case RenderSurfaceReason::kSubtreeIsBeingCaptured:
      return "kSubtreeIsBeingCaptured";
    case RenderSurfaceReason::kViewTransitionParticipant:
      return "kViewTransitionParticipant";
    case RenderSurfaceReason::kGradientMask:
      return "kGradientMask";
    case RenderSurfaceReason::k2DScaleTransformWithCompositedDescendants:
      return "k2DScaleTransformWithCompositedDescendants";
    case RenderSurfaceReason::kUnboundedElement:
      return "kUnboundedElement";
    case RenderSurfaceReason::kTest:
      return "kTest";
    default:
      return nullptr;
  }
}

std::string RenderSurfaceReasonToString(RenderSurfaceReason value) {
  const char *str = RenderSurfaceReasonToStringHelper(value);
  if (!str) {
    return base::StringPrintf("Unknown RenderSurfaceReason value: %i", static_cast<int32_t>(value));
  }
  return str;
}

std::ostream& operator<<(std::ostream& os, RenderSurfaceReason value) {
  return os << RenderSurfaceReasonToString(value);
}

namespace internal {

}  // namespace internal
}  // namespace mojom
}  // namespace cc

namespace perfetto {

// static
void TraceFormatTraits<::cc::mojom::RenderSurfaceReason>::WriteIntoTrace(
   perfetto::TracedValue context, ::cc::mojom::RenderSurfaceReason value) {
  return std::move(context).WriteString(::cc::mojom::RenderSurfaceReasonToString(value));
}

} // namespace perfetto