// ui/base/ime/mojom/text_edit_commands.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 "ui/base/ime/mojom/text_edit_commands.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 "ui/base/ime/mojom/text_edit_commands.mojom-params-data.h"
namespace ui {
namespace mojom {

NOINLINE static const char* TextEditCommandToStringHelper(TextEditCommand value) {
  // Defined in a helper function to ensure that Clang generates a lookup table.
  switch(value) {
    case TextEditCommand::kDeleteBackward:
      return "kDeleteBackward";
    case TextEditCommand::kDeleteForward:
      return "kDeleteForward";
    case TextEditCommand::kDeleteToBeginningOfLine:
      return "kDeleteToBeginningOfLine";
    case TextEditCommand::kDeleteToBeginningOfParagraph:
      return "kDeleteToBeginningOfParagraph";
    case TextEditCommand::kDeleteToEndOfLine:
      return "kDeleteToEndOfLine";
    case TextEditCommand::kDeleteToEndOfParagraph:
      return "kDeleteToEndOfParagraph";
    case TextEditCommand::kDeleteWordBackward:
      return "kDeleteWordBackward";
    case TextEditCommand::kDeleteWordForward:
      return "kDeleteWordForward";
    case TextEditCommand::kMoveBackward:
      return "kMoveBackward";
    case TextEditCommand::kMoveBackwardAndModifySelection:
      return "kMoveBackwardAndModifySelection";
    case TextEditCommand::kMoveDown:
      return "kMoveDown";
    case TextEditCommand::kMoveDownAndModifySelection:
      return "kMoveDownAndModifySelection";
    case TextEditCommand::kMoveForward:
      return "kMoveForward";
    case TextEditCommand::kMoveForwardAndModifySelection:
      return "kMoveForwardAndModifySelection";
    case TextEditCommand::kMoveLeft:
      return "kMoveLeft";
    case TextEditCommand::kMoveLeftAndModifySelection:
      return "kMoveLeftAndModifySelection";
    case TextEditCommand::kMovePageDown:
      return "kMovePageDown";
    case TextEditCommand::kMovePageDownAndModifySelection:
      return "kMovePageDownAndModifySelection";
    case TextEditCommand::kMovePageUp:
      return "kMovePageUp";
    case TextEditCommand::kMovePageUpAndModifySelection:
      return "kMovePageUpAndModifySelection";
    case TextEditCommand::kMoveRight:
      return "kMoveRight";
    case TextEditCommand::kMoveRightAndModifySelection:
      return "kMoveRightAndModifySelection";
    case TextEditCommand::kMoveToBeginningOfDocument:
      return "kMoveToBeginningOfDocument";
    case TextEditCommand::kMoveToBeginningOfDocumentAndModifySelection:
      return "kMoveToBeginningOfDocumentAndModifySelection";
    case TextEditCommand::kMoveToBeginningOfLine:
      return "kMoveToBeginningOfLine";
    case TextEditCommand::kMoveToBeginningOfLineAndModifySelection:
      return "kMoveToBeginningOfLineAndModifySelection";
    case TextEditCommand::kMoveToBeginningOfParagraph:
      return "kMoveToBeginningOfParagraph";
    case TextEditCommand::kMoveToBeginningOfParagraphAndModifySelection:
      return "kMoveToBeginningOfParagraphAndModifySelection";
    case TextEditCommand::kMoveToEndOfDocument:
      return "kMoveToEndOfDocument";
    case TextEditCommand::kMoveToEndOfDocumentAndModifySelection:
      return "kMoveToEndOfDocumentAndModifySelection";
    case TextEditCommand::kMoveToEndOfLine:
      return "kMoveToEndOfLine";
    case TextEditCommand::kMoveToEndOfLineAndModifySelection:
      return "kMoveToEndOfLineAndModifySelection";
    case TextEditCommand::kMoveToEndOfParagraph:
      return "kMoveToEndOfParagraph";
    case TextEditCommand::kMoveToEndOfParagraphAndModifySelection:
      return "kMoveToEndOfParagraphAndModifySelection";
    case TextEditCommand::kMoveParagraphBackwardAndModifySelection:
      return "kMoveParagraphBackwardAndModifySelection";
    case TextEditCommand::kMoveParagraphForwardAndModifySelection:
      return "kMoveParagraphForwardAndModifySelection";
    case TextEditCommand::kMoveUp:
      return "kMoveUp";
    case TextEditCommand::kMoveUpAndModifySelection:
      return "kMoveUpAndModifySelection";
    case TextEditCommand::kMoveWordBackward:
      return "kMoveWordBackward";
    case TextEditCommand::kMoveWordBackwardAndModifySelection:
      return "kMoveWordBackwardAndModifySelection";
    case TextEditCommand::kMoveWordForward:
      return "kMoveWordForward";
    case TextEditCommand::kMoveWordForwardAndModifySelection:
      return "kMoveWordForwardAndModifySelection";
    case TextEditCommand::kMoveWordLeft:
      return "kMoveWordLeft";
    case TextEditCommand::kMoveWordLeftAndModifySelection:
      return "kMoveWordLeftAndModifySelection";
    case TextEditCommand::kMoveWordRight:
      return "kMoveWordRight";
    case TextEditCommand::kMoveWordRightAndModifySelection:
      return "kMoveWordRightAndModifySelection";
    case TextEditCommand::kScrollPageDown:
      return "kScrollPageDown";
    case TextEditCommand::kScrollPageUp:
      return "kScrollPageUp";
    case TextEditCommand::kScrollToBeginningOfDocument:
      return "kScrollToBeginningOfDocument";
    case TextEditCommand::kScrollToEndOfDocument:
      return "kScrollToEndOfDocument";
    case TextEditCommand::kUndo:
      return "kUndo";
    case TextEditCommand::kRedo:
      return "kRedo";
    case TextEditCommand::kCut:
      return "kCut";
    case TextEditCommand::kCopy:
      return "kCopy";
    case TextEditCommand::kPaste:
      return "kPaste";
    case TextEditCommand::kSelectAll:
      return "kSelectAll";
    case TextEditCommand::kSelectWord:
      return "kSelectWord";
    case TextEditCommand::kTranspose:
      return "kTranspose";
    case TextEditCommand::kYank:
      return "kYank";
    case TextEditCommand::kInsertText:
      return "kInsertText";
    case TextEditCommand::kSetMark:
      return "kSetMark";
    case TextEditCommand::kUnselect:
      return "kUnselect";
    case TextEditCommand::kInvalidCommand:
      return "kInvalidCommand";
    default:
      return nullptr;
  }
}

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

std::ostream& operator<<(std::ostream& os, TextEditCommand value) {
  return os << TextEditCommandToString(value);
}

namespace internal {

}  // namespace internal
}  // namespace mojom
}  // namespace ui

namespace perfetto {

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

} // namespace perfetto