// components/skills/public/skill_metrics.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 "components/skills/public/skill_metrics.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 "components/skills/public/skill_metrics.mojom-params-data.h"
namespace skills {
namespace mojom {

NOINLINE static const char* SkillsManagementPageToStringHelper(SkillsManagementPage value) {
  // Defined in a helper function to ensure that Clang generates a lookup table.
  switch(value) {
    case SkillsManagementPage::kErrorPage:
      return "kErrorPage";
    case SkillsManagementPage::kYourSkills:
      return "kYourSkills";
    case SkillsManagementPage::kBrowseSkills:
      return "kBrowseSkills";
    default:
      return nullptr;
  }
}

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

std::ostream& operator<<(std::ostream& os, SkillsManagementPage value) {
  return os << SkillsManagementPageToString(value);
}

NOINLINE static const char* SkillsManagementActionToStringHelper(SkillsManagementAction value) {
  // Defined in a helper function to ensure that Clang generates a lookup table.
  switch(value) {
    case SkillsManagementAction::kPageOpened:
      return "kPageOpened";
    case SkillsManagementAction::kClickedAddSkill:
      return "kClickedAddSkill";
    case SkillsManagementAction::kClickedEditSkill:
      return "kClickedEditSkill";
    case SkillsManagementAction::kClickedDeleteSkill:
      return "kClickedDeleteSkill";
    case SkillsManagementAction::kClickedCopyInstructions:
      return "kClickedCopyInstructions";
    case SkillsManagementAction::kClickedBrowseSkills:
      return "kClickedBrowseSkills";
    case SkillsManagementAction::kNonEmptySearch:
      return "kNonEmptySearch";
    case SkillsManagementAction::kEmptySearch:
      return "kEmptySearch";
    default:
      return nullptr;
  }
}

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

std::ostream& operator<<(std::ostream& os, SkillsManagementAction value) {
  return os << SkillsManagementActionToString(value);
}

NOINLINE static const char* SkillsPromptRefinementOutcomeToStringHelper(SkillsPromptRefinementOutcome value) {
  // Defined in a helper function to ensure that Clang generates a lookup table.
  switch(value) {
    case SkillsPromptRefinementOutcome::kNotRefined:
      return "kNotRefined";
    case SkillsPromptRefinementOutcome::kUsedRefinedPrompt:
      return "kUsedRefinedPrompt";
    case SkillsPromptRefinementOutcome::kRevertedAndNotUsed:
      return "kRevertedAndNotUsed";
    default:
      return nullptr;
  }
}

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

std::ostream& operator<<(std::ostream& os, SkillsPromptRefinementOutcome value) {
  return os << SkillsPromptRefinementOutcomeToString(value);
}

namespace internal {

}  // namespace internal
}  // namespace mojom
}  // namespace skills

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto