910e62b5创建于 1月15日历史提交
// Copyright 2011 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/text_input_client.h"

#include <iomanip>
#include <ios>
#include <ostream>
#include <string_view>

namespace ui {

TextInputClient::~TextInputClient() {
}

bool TextInputClient::CanInsertImage() {
  return false;
}

#if BUILDFLAG(IS_CHROMEOS)
void TextInputClient::ExtendSelectionAndReplace(
    size_t length_before_selection,
    size_t length_after_selection,
    const std::u16string_view replacement_string) {
  ExtendSelectionAndDelete(length_before_selection, length_after_selection);
  InsertText(std::u16string(replacement_string),
             InsertTextCursorBehavior::kMoveCursorAfterText);
}

std::optional<GrammarFragment> TextInputClient::GetGrammarFragmentAtCursor()
    const {
  return std::nullopt;
}

bool TextInputClient::ClearGrammarFragments(const gfx::Range& range) {
  return false;
}

bool TextInputClient::AddGrammarFragments(
    const std::vector<GrammarFragment>& fragments) {
  return false;
}

bool TextInputClient::SupportsAlwaysConfirmComposition() {
  return true;
}
#endif

#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS)
ui::TextInputClient::EditingContext TextInputClient::GetTextEditingContext() {
  return {};
}
#endif

#if BUILDFLAG(IS_WIN)
std::ostream& operator<<(std::ostream& os, ui::IndexFromPointFlags flags) {
  switch (flags) {
    case ui::IndexFromPointFlags::kNone:
      os << "None";
      break;
    case ui::IndexFromPointFlags::kNearestToContainedPoint:
      os << "NearestToContainedPoint";
      break;
    case ui::IndexFromPointFlags::kNearestToUncontainedPoint:
      os << "NearestToUncontainedPoint";
      break;
    case ui::IndexFromPointFlags::kNearestToPoint:
      os << "NearestToPoint";
      break;
    default:
      using T = std::underlying_type_t<ui::IndexFromPointFlags>;
      static_assert(sizeof(T) <= sizeof(uint32_t));
      os << "Unknown(0x" << std::setfill('0') << std::setw(sizeof(T) * 2)
         << std::hex << static_cast<uint32_t>(flags) << ")";
      break;
  }
  return os;
}
#endif  // BUILDFLAG(IS_WIN)

}  // namespace ui