Index: chromeos/binder/command_stream.cc |
diff --git a/chromeos/binder/command_stream.cc b/chromeos/binder/command_stream.cc |
index 947cf74598311b3e7c25795b52b8649a4284028d..ee55ba485965c68eb6ab3bd8319cf6221bc3af86 100644 |
--- a/chromeos/binder/command_stream.cc |
+++ b/chromeos/binder/command_stream.cc |
@@ -111,9 +111,20 @@ bool CommandStream::OnIncomingCommand(uint32_t command, BufferReader* reader) { |
} |
case BR_OK: |
break; |
- case BR_TRANSACTION: |
- NOTIMPLEMENTED(); |
+ case BR_TRANSACTION: { |
+ TransactionDataFromDriver data( |
+ base::Bind(&CommandStream::FreeTransactionBuffer, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ if (!reader->Read(data.mutable_data(), sizeof(*data.mutable_data()))) { |
+ LOG(ERROR) << "Failed to read transaction data."; |
+ return false; |
+ } |
+ if (!incoming_command_handler_->OnTransaction(data)) { |
+ LOG(ERROR) << "Failed to handle transaction."; |
+ return false; |
+ } |
break; |
+ } |
case BR_REPLY: { |
scoped_ptr<TransactionDataFromDriver> data(new TransactionDataFromDriver( |
base::Bind(&CommandStream::FreeTransactionBuffer, |