Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: chromeos/dbus/ibus/ibus_lookup_table.cc

Issue 11361210: Extends IBusObject to handle attachment field. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix include order Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/dbus/ibus/ibus_lookup_table.h ('k') | chromeos/dbus/ibus/ibus_object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/dbus/ibus/ibus_lookup_table.cc
diff --git a/chromeos/dbus/ibus/ibus_lookup_table.cc b/chromeos/dbus/ibus/ibus_lookup_table.cc
index 2a926f1055a0f2dff40ace56d803a143a54eddfe..9a751b3df6e7152e27705bba8845ac59c25d689e 100644
--- a/chromeos/dbus/ibus/ibus_lookup_table.cc
+++ b/chromeos/dbus/ibus/ibus_lookup_table.cc
@@ -6,9 +6,10 @@
#include <string>
#include "base/logging.h"
-#include "dbus/message.h"
-#include "chromeos/dbus/ibus/ibus_text.h"
+#include "base/values.h"
#include "chromeos/dbus/ibus/ibus_object.h"
+#include "chromeos/dbus/ibus/ibus_text.h"
+#include "dbus/message.h"
namespace chromeos {
// TODO(nona): Remove ibus namespace after complete libibus removal.
@@ -17,6 +18,7 @@ namespace ibus {
namespace {
// The default entry number of a page in IBusLookupTable.
const int kDefaultPageSize = 9;
+const char kShowWindowAtCompositionKey[] = "show_window_at_composition";
} // namespace
void AppendIBusLookupTable(const IBusLookupTable& table,
@@ -24,6 +26,11 @@ void AppendIBusLookupTable(const IBusLookupTable& table,
IBusObjectWriter ibus_lookup_table_writer("IBusLookupTable",
"uubbiavav",
writer);
+ scoped_ptr<base::Value> show_position(
+ base::Value::CreateBooleanValue(table.show_window_at_composition()));
+ ibus_lookup_table_writer.AddAttachment(kShowWindowAtCompositionKey,
+ *show_position.get());
+ ibus_lookup_table_writer.CloseHeader();
ibus_lookup_table_writer.AppendUint32(table.page_size());
ibus_lookup_table_writer.AppendUint32(table.cursor_position());
ibus_lookup_table_writer.AppendBool(table.is_cursor_visible());
@@ -60,46 +67,15 @@ void AppendIBusLookupTable(const IBusLookupTable& table,
bool PopIBusLookupTable(dbus::MessageReader* reader, IBusLookupTable* table) {
IBusObjectReader ibus_object_reader("IBusLookupTable", reader);
- dbus::MessageReader attachment_reader(NULL);
- if (!ibus_object_reader.InitWithAttachmentReader(&attachment_reader))
+ if (!ibus_object_reader.Init())
return false;
- while (attachment_reader.HasMoreData()) {
- dbus::MessageReader dictionary_reader(NULL);
- if (!attachment_reader.PopDictEntry(&dictionary_reader)) {
- LOG(ERROR) << "Invalid attachment structure: "
- << "The attachment field is array of dictionary entry.";
- return false;
- }
-
- std::string key;
- if (!dictionary_reader.PopString(&key)) {
- LOG(ERROR) << "Invalid attachement structure: "
- << "The 1st dictionary entry should be string.";
- return false;
- }
- if (key != "show_window_at_composition")
- continue;
-
- dbus::MessageReader variant_reader(NULL);
- if (!dictionary_reader.PopVariant(&variant_reader)) {
- LOG(ERROR) << "Invalid attachment structure: "
- << "The 2nd dictionary entry shuold be variant.";
- return false;
- }
-
- dbus::MessageReader sub_variant_reader(NULL);
- if (!variant_reader.PopVariant(&sub_variant_reader)) {
- LOG(ERROR) << "Invalid attachment structure: "
- << "The 2nd variant entry should contain variant.";
- return false;
- }
-
- bool show_window_at_composition = false;
- if (!sub_variant_reader.PopBool(&show_window_at_composition))
- continue; // Ignores other field.
-
- table->set_show_window_at_composition(show_window_at_composition);
+ const base::Value* value =
+ ibus_object_reader.GetAttachment(kShowWindowAtCompositionKey);
+ if (value) {
+ bool show_window_at_composition;
+ if (value->GetAsBoolean(&show_window_at_composition))
+ table->set_show_window_at_composition(show_window_at_composition);
}
uint32 page_size = 0;
@@ -202,7 +178,8 @@ IBusLookupTable::IBusLookupTable()
: page_size_(kDefaultPageSize),
cursor_position_(0),
is_cursor_visible_(true),
- orientation_(IBUS_LOOKUP_TABLE_ORIENTATION_HORIZONTAL) {
+ orientation_(IBUS_LOOKUP_TABLE_ORIENTATION_HORIZONTAL),
+ show_window_at_composition_(false) {
}
IBusLookupTable::~IBusLookupTable() {
« no previous file with comments | « chromeos/dbus/ibus/ibus_lookup_table.h ('k') | chromeos/dbus/ibus/ibus_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698