| Index: chromeos/dbus/ibus/ibus_text.cc
|
| diff --git a/chromeos/dbus/ibus/ibus_text.cc b/chromeos/dbus/ibus/ibus_text.cc
|
| deleted file mode 100644
|
| index dfc5ab49c80d411b126a06cd03a7fb225f96e696..0000000000000000000000000000000000000000
|
| --- a/chromeos/dbus/ibus/ibus_text.cc
|
| +++ /dev/null
|
| @@ -1,239 +0,0 @@
|
| -// Copyright (c) 2012 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 "chromeos/dbus/ibus/ibus_text.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/values.h"
|
| -#include "chromeos/dbus/ibus/ibus_object.h"
|
| -#include "dbus/message.h"
|
| -
|
| -namespace chromeos {
|
| -
|
| -namespace {
|
| -const uint32 kAttributeUnderline = 1; // Indicates underline attribute.
|
| -const uint32 kAttributeSelection = 2; // Indicates background attribute.
|
| -const char kAnnotationKey[] = "annotation";
|
| -const char kDescriptionTitleKey[] = "description_title";
|
| -const char kDescriptionBodyKey[] = "description_body";
|
| -
|
| -struct IBusAttribute {
|
| - IBusAttribute() : type(0), value(0), start_index(0), end_index(0) {}
|
| - uint32 type;
|
| - uint32 value;
|
| - uint32 start_index;
|
| - uint32 end_index;
|
| -};
|
| -
|
| -// Pops a IBusAttribute from |reader|.
|
| -// Returns false if an error occurs.
|
| -bool PopIBusAttribute(dbus::MessageReader* reader, IBusAttribute* attribute) {
|
| - IBusObjectReader ibus_object_reader("IBusAttribute", reader);
|
| - if (!ibus_object_reader.Init())
|
| - return false;
|
| -
|
| - if (!ibus_object_reader.PopUint32(&attribute->type) ||
|
| - !ibus_object_reader.PopUint32(&attribute->value) ||
|
| - !ibus_object_reader.PopUint32(&attribute->start_index) ||
|
| - !ibus_object_reader.PopUint32(&attribute->end_index)) {
|
| - LOG(ERROR) << "Invalid variant structure[IBusAttribute]: "
|
| - << "IBusAttribute should contain 4 unsigned integers.";
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -// Appends a IBusAttribute into |writer|.
|
| -void AppendIBusAttribute(dbus::MessageWriter* writer,
|
| - const IBusAttribute& attribute) {
|
| - IBusObjectWriter ibus_attribute_writer("IBusAttribute", "uuuu", writer);
|
| - ibus_attribute_writer.CloseHeader();
|
| - ibus_attribute_writer.AppendUint32(attribute.type);
|
| - ibus_attribute_writer.AppendUint32(attribute.value);
|
| - ibus_attribute_writer.AppendUint32(attribute.start_index);
|
| - ibus_attribute_writer.AppendUint32(attribute.end_index);
|
| - ibus_attribute_writer.CloseAll();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void AppendIBusText(const IBusText& ibus_text, dbus::MessageWriter* writer) {
|
| - IBusObjectWriter ibus_text_writer("IBusText", "sv", writer);
|
| -
|
| - if (!ibus_text.annotation().empty()) {
|
| - scoped_ptr<base::Value> annotation(
|
| - base::Value::CreateStringValue(ibus_text.annotation()));
|
| - ibus_text_writer.AddAttachment(kAnnotationKey, *annotation.get());
|
| - }
|
| - if (!ibus_text.description_title().empty()) {
|
| - scoped_ptr<base::Value> description_title(
|
| - base::Value::CreateStringValue(ibus_text.description_title()));
|
| - ibus_text_writer.AddAttachment(kDescriptionTitleKey,
|
| - *description_title.get());
|
| - }
|
| - if (!ibus_text.description_body().empty()) {
|
| - scoped_ptr<base::Value> description_body(
|
| - base::Value::CreateStringValue(ibus_text.description_body()));
|
| - ibus_text_writer.AddAttachment(kDescriptionBodyKey,
|
| - *description_body.get());
|
| - }
|
| - ibus_text_writer.CloseHeader();
|
| -
|
| - ibus_text_writer.AppendString(ibus_text.text());
|
| -
|
| - // Start appending IBusAttrList into IBusText
|
| - IBusObjectWriter ibus_attr_list_writer("IBusAttrList", "av", NULL);
|
| - ibus_text_writer.AppendIBusObject(&ibus_attr_list_writer);
|
| - ibus_attr_list_writer.CloseHeader();
|
| - dbus::MessageWriter attribute_array_writer(NULL);
|
| - ibus_attr_list_writer.OpenArray("v", &attribute_array_writer);
|
| -
|
| - const std::vector<IBusText::UnderlineAttribute>& underline_attributes =
|
| - ibus_text.underline_attributes();
|
| - for (size_t i = 0; i < underline_attributes.size(); ++i) {
|
| - IBusAttribute attribute;
|
| - attribute.type = kAttributeUnderline;
|
| - attribute.value = static_cast<uint32>(underline_attributes[i].type);
|
| - attribute.start_index = underline_attributes[i].start_index;
|
| - attribute.end_index = underline_attributes[i].end_index;
|
| - AppendIBusAttribute(&attribute_array_writer, attribute);
|
| - }
|
| -
|
| - const std::vector<IBusText::SelectionAttribute>& selection_attributes =
|
| - ibus_text.selection_attributes();
|
| - for (size_t i = 0; i < selection_attributes.size(); ++i) {
|
| - IBusAttribute attribute;
|
| - attribute.type = kAttributeSelection;
|
| - attribute.value = 0;
|
| - attribute.start_index = selection_attributes[i].start_index;
|
| - attribute.end_index = selection_attributes[i].end_index;
|
| - AppendIBusAttribute(&attribute_array_writer, attribute);
|
| - }
|
| -
|
| - // Close all writers.
|
| - ibus_attr_list_writer.CloseContainer(&attribute_array_writer);
|
| - ibus_attr_list_writer.CloseAll();
|
| - ibus_text_writer.CloseAll();
|
| -}
|
| -
|
| -void CHROMEOS_EXPORT AppendStringAsIBusText(const std::string& text,
|
| - dbus::MessageWriter* writer) {
|
| - IBusText ibus_text;
|
| - ibus_text.set_text(text);
|
| - AppendIBusText(ibus_text, writer);
|
| -}
|
| -
|
| -bool PopIBusText(dbus::MessageReader* reader, IBusText* ibus_text) {
|
| - IBusObjectReader ibus_text_reader("IBusText", reader);
|
| -
|
| - if (!ibus_text_reader.Init())
|
| - return false;
|
| -
|
| - const base::Value* annotation_value =
|
| - ibus_text_reader.GetAttachment(kAnnotationKey);
|
| - if (annotation_value) {
|
| - std::string annotation;
|
| - if (annotation_value->GetAsString(&annotation))
|
| - ibus_text->set_annotation(annotation);
|
| - }
|
| -
|
| - const base::Value* description_title_value =
|
| - ibus_text_reader.GetAttachment(kDescriptionTitleKey);
|
| - if (description_title_value) {
|
| - std::string description_title;
|
| - if (description_title_value->GetAsString(&description_title))
|
| - ibus_text->set_description_title(description_title);
|
| - }
|
| -
|
| - const base::Value* description_body_value =
|
| - ibus_text_reader.GetAttachment(kDescriptionBodyKey);
|
| - if (description_body_value) {
|
| - std::string description_body;
|
| - if (description_body_value->GetAsString(&description_body))
|
| - ibus_text->set_description_body(description_body);
|
| - }
|
| -
|
| - std::string text;
|
| - if (!ibus_text_reader.PopString(&text)) {
|
| - LOG(ERROR) << "Invalid variant structure[IBusText]: "
|
| - << "1st argument should be string.";
|
| - return false;
|
| - }
|
| -
|
| - ibus_text->set_text(text);
|
| -
|
| - // Start reading IBusAttrList object
|
| - IBusObjectReader ibus_attr_list_reader("IBusAttrList", NULL);
|
| - if (!ibus_text_reader.PopIBusObject(&ibus_attr_list_reader)) {
|
| - LOG(ERROR) << "Invalid variant structure[IBusText]: "
|
| - << "2nd argument should be IBusAttrList.";
|
| - return false;
|
| - }
|
| -
|
| - dbus::MessageReader attribute_array_reader(NULL);
|
| - if (!ibus_attr_list_reader.PopArray(&attribute_array_reader)) {
|
| - LOG(ERROR) << "Invalid variant structure[IBusAttrList]: "
|
| - << "1st argument should be array of IBusAttribute.";
|
| - return false;
|
| - }
|
| -
|
| - std::vector<IBusText::UnderlineAttribute>* underline_attributes =
|
| - ibus_text->mutable_underline_attributes();
|
| -
|
| - std::vector<IBusText::SelectionAttribute>* selection_attributes =
|
| - ibus_text->mutable_selection_attributes();
|
| -
|
| - while (attribute_array_reader.HasMoreData()) {
|
| - IBusAttribute attribute;
|
| - if (!PopIBusAttribute(&attribute_array_reader, &attribute))
|
| - return false;
|
| -
|
| - if (attribute.type == kAttributeUnderline) {
|
| - IBusText::UnderlineAttribute underline_attribute;
|
| - underline_attribute.type =
|
| - static_cast<IBusText::IBusTextUnderlineType>(attribute.value);
|
| - underline_attribute.start_index = attribute.start_index;
|
| - underline_attribute.end_index = attribute.end_index;
|
| - underline_attributes->push_back(underline_attribute);
|
| - } else if (attribute.type == kAttributeSelection) {
|
| - IBusText::SelectionAttribute selection_attribute;
|
| - selection_attribute.start_index = attribute.start_index;
|
| - selection_attribute.end_index = attribute.end_index;
|
| - selection_attributes->push_back(selection_attribute);
|
| - } else {
|
| - DVLOG(1) << "Chrome does not support background attribute.";
|
| - }
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool CHROMEOS_EXPORT PopStringFromIBusText(dbus::MessageReader* reader,
|
| - std::string* text) {
|
| - IBusText ibus_text;
|
| - if (!PopIBusText(reader, &ibus_text))
|
| - return false;
|
| - *text = ibus_text.text();
|
| - return true;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// IBusText
|
| -IBusText::IBusText()
|
| - : text_("") {
|
| -}
|
| -
|
| -IBusText::~IBusText() {
|
| -}
|
| -
|
| -void IBusText::CopyFrom(const IBusText& obj) {
|
| - text_ = obj.text();
|
| - annotation_ = obj.annotation();
|
| - description_title_ = obj.description_title();
|
| - description_body_ = obj.description_body();
|
| - underline_attributes_ = obj.underline_attributes();
|
| - selection_attributes_ = obj.selection_attributes();
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|