Index: mojo/public/cpp/bindings/tests/router_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/router_unittest.cc b/mojo/public/cpp/bindings/tests/router_unittest.cc |
index c9c9f01813af766a56cf2baa8c7bcce2015b79d3..6e6a8edb29ea053659dfd1c122815309ffbb673e 100644 |
--- a/mojo/public/cpp/bindings/tests/router_unittest.cc |
+++ b/mojo/public/cpp/bindings/tests/router_unittest.cc |
@@ -2,14 +2,11 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include <stdlib.h> |
-#include <string.h> |
- |
#include "base/message_loop/message_loop.h" |
#include "mojo/message_pump/message_pump_mojo.h" |
-#include "mojo/public/cpp/bindings/lib/message_builder.h" |
#include "mojo/public/cpp/bindings/lib/router.h" |
#include "mojo/public/cpp/bindings/tests/message_queue.h" |
+#include "mojo/public/cpp/bindings/tests/router_test_util.h" |
#include "mojo/public/cpp/system/macros.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -17,112 +14,6 @@ namespace mojo { |
namespace test { |
namespace { |
-void AllocRequestMessage(uint32_t name, const char* text, Message* message) { |
- size_t payload_size = strlen(text) + 1; // Plus null terminator. |
- internal::RequestMessageBuilder builder(name, payload_size); |
- memcpy(builder.buffer()->Allocate(payload_size), text, payload_size); |
- |
- builder.message()->MoveTo(message); |
-} |
- |
-void AllocResponseMessage(uint32_t name, |
- const char* text, |
- uint64_t request_id, |
- Message* message) { |
- size_t payload_size = strlen(text) + 1; // Plus null terminator. |
- internal::ResponseMessageBuilder builder(name, payload_size, request_id); |
- memcpy(builder.buffer()->Allocate(payload_size), text, payload_size); |
- |
- builder.message()->MoveTo(message); |
-} |
- |
-class MessageAccumulator : public MessageReceiver { |
- public: |
- explicit MessageAccumulator(MessageQueue* queue) : queue_(queue) {} |
- |
- bool Accept(Message* message) override { |
- queue_->Push(message); |
- return true; |
- } |
- |
- private: |
- MessageQueue* queue_; |
-}; |
- |
-class ResponseGenerator : public MessageReceiverWithResponderStatus { |
- public: |
- ResponseGenerator() {} |
- |
- bool Accept(Message* message) override { return false; } |
- |
- bool AcceptWithResponder(Message* message, |
- MessageReceiverWithStatus* responder) override { |
- EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse)); |
- |
- bool result = SendResponse( |
- message->name(), message->request_id(), |
- reinterpret_cast<const char*>(message->payload()), responder); |
- EXPECT_TRUE(responder->IsValid()); |
- delete responder; |
- return result; |
- } |
- |
- bool SendResponse(uint32_t name, |
- uint64_t request_id, |
- const char* request_string, |
- MessageReceiver* responder) { |
- Message response; |
- std::string response_string(request_string); |
- response_string += " world!"; |
- AllocResponseMessage(name, response_string.c_str(), request_id, &response); |
- |
- return responder->Accept(&response); |
- } |
-}; |
- |
-class LazyResponseGenerator : public ResponseGenerator { |
- public: |
- LazyResponseGenerator() : responder_(nullptr), name_(0), request_id_(0) {} |
- |
- ~LazyResponseGenerator() override { delete responder_; } |
- |
- bool AcceptWithResponder(Message* message, |
- MessageReceiverWithStatus* responder) override { |
- name_ = message->name(); |
- request_id_ = message->request_id(); |
- request_string_ = |
- std::string(reinterpret_cast<const char*>(message->payload())); |
- responder_ = responder; |
- return true; |
- } |
- |
- bool has_responder() const { return !!responder_; } |
- |
- bool responder_is_valid() const { return responder_->IsValid(); } |
- |
- // Send the response and delete the responder. |
- void CompleteWithResponse() { Complete(true); } |
- |
- // Delete the responder without sending a response. |
- void CompleteWithoutResponse() { Complete(false); } |
- |
- private: |
- // Completes the request handling by deleting responder_. Optionally |
- // also sends a response. |
- void Complete(bool send_response) { |
- if (send_response) { |
- SendResponse(name_, request_id_, request_string_.c_str(), responder_); |
- } |
- delete responder_; |
- responder_ = nullptr; |
- } |
- |
- MessageReceiverWithStatus* responder_; |
- uint32_t name_; |
- uint64_t request_id_; |
- std::string request_string_; |
-}; |
- |
class RouterTest : public testing::Test { |
public: |
RouterTest() : loop_(common::MessagePumpMojo::Create()) {} |