blob: 0898ec4159336999ff1b7e96d58a845c684fe4bd [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/common/input/ime_text_span_conversions.h"
#include "base/logging.h"
namespace content {
blink::WebImeTextSpan::Type ConvertUiImeTextSpanTypeToWebType(
ui::ImeTextSpan::Type type) {
switch (type) {
case ui::ImeTextSpan::Type::kComposition:
return blink::WebImeTextSpan::Type::kComposition;
case ui::ImeTextSpan::Type::kSuggestion:
return blink::WebImeTextSpan::Type::kSuggestion;
case ui::ImeTextSpan::Type::kMisspellingSuggestion:
return blink::WebImeTextSpan::Type::kMisspellingSuggestion;
}
NOTREACHED();
return blink::WebImeTextSpan::Type::kComposition;
}
ui::ImeTextSpan::Type ConvertWebImeTextSpanTypeToUiType(
blink::WebImeTextSpan::Type type) {
switch (type) {
case blink::WebImeTextSpan::Type::kComposition:
return ui::ImeTextSpan::Type::kComposition;
case blink::WebImeTextSpan::Type::kSuggestion:
return ui::ImeTextSpan::Type::kSuggestion;
case blink::WebImeTextSpan::Type::kMisspellingSuggestion:
return ui::ImeTextSpan::Type::kMisspellingSuggestion;
}
NOTREACHED();
return ui::ImeTextSpan::Type::kComposition;
}
ws::mojom::ImeTextSpanThickness ConvertUiThicknessToUiImeTextSpanThickness(
ui::ImeTextSpan::Thickness thickness) {
switch (thickness) {
case ui::ImeTextSpan::Thickness::kNone:
return ws::mojom::ImeTextSpanThickness::kNone;
case ui::ImeTextSpan::Thickness::kThin:
return ws::mojom::ImeTextSpanThickness::kThin;
case ui::ImeTextSpan::Thickness::kThick:
return ws::mojom::ImeTextSpanThickness::kThick;
}
NOTREACHED();
return ws::mojom::ImeTextSpanThickness::kThin;
}
ui::ImeTextSpan::Thickness ConvertUiImeTextSpanThicknessToUiThickness(
ws::mojom::ImeTextSpanThickness thickness) {
switch (thickness) {
case ws::mojom::ImeTextSpanThickness::kNone:
return ui::ImeTextSpan::Thickness::kNone;
case ws::mojom::ImeTextSpanThickness::kThin:
return ui::ImeTextSpan::Thickness::kThin;
case ws::mojom::ImeTextSpanThickness::kThick:
return ui::ImeTextSpan::Thickness::kThick;
}
NOTREACHED();
return ui::ImeTextSpan::Thickness::kThin;
}
blink::WebImeTextSpan ConvertUiImeTextSpanToBlinkImeTextSpan(
const ui::ImeTextSpan& ui_ime_text_span) {
blink::WebImeTextSpan blink_ime_text_span = blink::WebImeTextSpan(
ConvertUiImeTextSpanTypeToWebType(ui_ime_text_span.type),
ui_ime_text_span.start_offset, ui_ime_text_span.end_offset,
ConvertUiThicknessToUiImeTextSpanThickness(ui_ime_text_span.thickness),
ui_ime_text_span.background_color,
ui_ime_text_span.suggestion_highlight_color,
ui_ime_text_span.suggestions);
blink_ime_text_span.underline_color = ui_ime_text_span.underline_color;
blink_ime_text_span.remove_on_finish_composing =
ui_ime_text_span.remove_on_finish_composing;
return blink_ime_text_span;
}
std::vector<blink::WebImeTextSpan> ConvertUiImeTextSpansToBlinkImeTextSpans(
const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
std::vector<blink::WebImeTextSpan> blink_ime_text_spans;
for (const auto& ui_ime_text_span : ui_ime_text_spans) {
blink_ime_text_spans.push_back(
ConvertUiImeTextSpanToBlinkImeTextSpan(ui_ime_text_span));
}
return blink_ime_text_spans;
}
ui::ImeTextSpan ConvertBlinkImeTextSpanToUiImeTextSpan(
const blink::WebImeTextSpan& blink_ime_text_span) {
ui::ImeTextSpan ui_ime_text_span = ui::ImeTextSpan(
ConvertWebImeTextSpanTypeToUiType(blink_ime_text_span.type),
blink_ime_text_span.start_offset, blink_ime_text_span.end_offset,
ConvertUiImeTextSpanThicknessToUiThickness(blink_ime_text_span.thickness),
blink_ime_text_span.background_color,
blink_ime_text_span.suggestion_highlight_color,
blink_ime_text_span.suggestions);
ui_ime_text_span.underline_color = blink_ime_text_span.underline_color;
ui_ime_text_span.remove_on_finish_composing =
blink_ime_text_span.remove_on_finish_composing;
return ui_ime_text_span;
}
std::vector<ui::ImeTextSpan> ConvertBlinkImeTextSpansToUiImeTextSpans(
const std::vector<blink::WebImeTextSpan>& blink_ime_text_spans) {
std::vector<ui::ImeTextSpan> ui_ime_text_spans;
for (const auto& blink_ime_text_span : blink_ime_text_spans) {
ui_ime_text_spans.push_back(
ConvertBlinkImeTextSpanToUiImeTextSpan(blink_ime_text_span));
}
return ui_ime_text_spans;
}
} // namespace content