| Index: ipc/ipc_channel_reader_unittest.cc
|
| diff --git a/ipc/ipc_channel_reader_unittest.cc b/ipc/ipc_channel_reader_unittest.cc
|
| index 1107cc73eeb936f064ad109ae4cc3c759f63fd86..fbb73f9443ee727fac89e29e7481f690ccb0c4df 100644
|
| --- a/ipc/ipc_channel_reader_unittest.cc
|
| +++ b/ipc/ipc_channel_reader_unittest.cc
|
| @@ -12,65 +12,15 @@
|
| #include <set>
|
|
|
| #include "base/run_loop.h"
|
| -#include "ipc/attachment_broker.h"
|
| #include "ipc/brokerable_attachment.h"
|
| #include "ipc/ipc_channel_reader.h"
|
| -#include "ipc/placeholder_brokerable_attachment.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -// Whether IPC::Message::FindNext() can determine message size for
|
| -// partial messages. The condition is from FindNext() implementation.
|
| -#if USE_ATTACHMENT_BROKER
|
| -#define MESSAGE_FINDNEXT_PARTIAL 0
|
| -#else
|
| -#define MESSAGE_FINDNEXT_PARTIAL 1
|
| -#endif
|
| -
|
| namespace IPC {
|
| namespace internal {
|
|
|
| namespace {
|
|
|
| -#if USE_ATTACHMENT_BROKER
|
| -
|
| -class MockAttachment : public BrokerableAttachment {
|
| - public:
|
| - MockAttachment() {}
|
| - MockAttachment(BrokerableAttachment::AttachmentId id)
|
| - : BrokerableAttachment(id) {}
|
| -
|
| -#if defined(OS_POSIX)
|
| - base::PlatformFile TakePlatformFile() override {
|
| - return base::PlatformFile();
|
| - }
|
| -#endif // OS_POSIX
|
| -
|
| - BrokerableType GetBrokerableType() const override { return WIN_HANDLE; }
|
| -
|
| - private:
|
| - ~MockAttachment() override {}
|
| -};
|
| -
|
| -class MockAttachmentBroker : public AttachmentBroker {
|
| - public:
|
| - typedef std::set<scoped_refptr<BrokerableAttachment>> AttachmentSet;
|
| -
|
| - bool SendAttachmentToProcess(
|
| - const scoped_refptr<BrokerableAttachment>& attachment,
|
| - base::ProcessId destination_process) override {
|
| - return false;
|
| - }
|
| -
|
| - bool OnMessageReceived(const Message& message) override { return false; }
|
| -
|
| - void AddAttachment(scoped_refptr<BrokerableAttachment> attachment) {
|
| - get_attachments()->push_back(attachment);
|
| - NotifyObservers(attachment->GetIdentifier());
|
| - }
|
| -};
|
| -
|
| -#endif // USE_ATTACHMENT_BROKER
|
| -
|
| class MockChannelReader : public ChannelReader {
|
| public:
|
| MockChannelReader()
|
| @@ -99,19 +49,8 @@ class MockChannelReader : public ChannelReader {
|
|
|
| base::ProcessId GetSenderPID() override { return base::kNullProcessId; }
|
|
|
| - bool IsAttachmentBrokerEndpoint() override { return false; }
|
| -
|
| - AttachmentBroker* GetAttachmentBroker() override { return broker_; }
|
| -
|
| - // This instance takes ownership of |m|.
|
| - void AddMessageForDispatch(Message* m) {
|
| - get_queued_messages()->push_back(m);
|
| - }
|
| -
|
| Message* get_last_dispatched_message() { return last_dispatched_message_; }
|
|
|
| - void set_broker(AttachmentBroker* broker) { broker_ = broker; }
|
| -
|
| void AppendData(const void* data, size_t size) {
|
| data_.append(static_cast<const char*>(data), size);
|
| }
|
| @@ -122,7 +61,6 @@ class MockChannelReader : public ChannelReader {
|
|
|
| private:
|
| Message* last_dispatched_message_;
|
| - AttachmentBroker* broker_;
|
| std::string data_;
|
| };
|
|
|
| @@ -137,52 +75,6 @@ const size_t LargePayloadSize = Channel::kMaximumReadBufferSize * 3 / 2;
|
|
|
| } // namespace
|
|
|
| -#if USE_ATTACHMENT_BROKER
|
| -
|
| -TEST(ChannelReaderTest, AttachmentAlreadyBrokered) {
|
| - MockAttachmentBroker broker;
|
| - MockChannelReader reader;
|
| - reader.set_broker(&broker);
|
| - scoped_refptr<MockAttachment> attachment(new MockAttachment);
|
| - broker.AddAttachment(attachment);
|
| -
|
| - Message* m = new Message;
|
| - PlaceholderBrokerableAttachment* needs_brokering_attachment =
|
| - new PlaceholderBrokerableAttachment(attachment->GetIdentifier());
|
| - EXPECT_TRUE(m->WriteAttachment(needs_brokering_attachment));
|
| - reader.AddMessageForDispatch(m);
|
| - EXPECT_EQ(ChannelReader::DISPATCH_FINISHED, reader.DispatchMessages());
|
| - EXPECT_EQ(m, reader.get_last_dispatched_message());
|
| -}
|
| -
|
| -TEST(ChannelReaderTest, AttachmentNotYetBrokered) {
|
| - std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoopForIO());
|
| -
|
| - MockAttachmentBroker broker;
|
| - MockChannelReader reader;
|
| - reader.set_broker(&broker);
|
| - scoped_refptr<MockAttachment> attachment(new MockAttachment);
|
| -
|
| - Message* m = new Message;
|
| - PlaceholderBrokerableAttachment* needs_brokering_attachment =
|
| - new PlaceholderBrokerableAttachment(attachment->GetIdentifier());
|
| - EXPECT_TRUE(m->WriteAttachment(needs_brokering_attachment));
|
| - reader.AddMessageForDispatch(m);
|
| - EXPECT_EQ(ChannelReader::DISPATCH_WAITING_ON_BROKER,
|
| - reader.DispatchMessages());
|
| - EXPECT_EQ(nullptr, reader.get_last_dispatched_message());
|
| -
|
| - broker.AddAttachment(attachment);
|
| - base::RunLoop run_loop;
|
| - run_loop.RunUntilIdle();
|
| -
|
| - EXPECT_EQ(m, reader.get_last_dispatched_message());
|
| -}
|
| -
|
| -#endif // USE_ATTACHMENT_BROKER
|
| -
|
| -#if !USE_ATTACHMENT_BROKER
|
| -
|
| // We can determine message size from its header (and hence resize the buffer)
|
| // only when attachment broker is not used, see IPC::Message::FindNext().
|
|
|
| @@ -227,8 +119,6 @@ TEST(ChannelReaderTest, InvalidMessageSize) {
|
| EXPECT_LE(reader.input_overflow_buf_.capacity(), capacity_before);
|
| }
|
|
|
| -#endif // !USE_ATTACHMENT_BROKER
|
| -
|
| TEST(ChannelReaderTest, TrimBuffer) {
|
| // ChannelReader uses std::string as a buffer, and calls reserve()
|
| // to trim it to kMaximumReadBufferSize. However, an implementation
|
| @@ -274,13 +164,9 @@ TEST(ChannelReaderTest, TrimBuffer) {
|
| EXPECT_EQ(ChannelReader::DISPATCH_FINISHED,
|
| reader.ProcessIncomingMessages());
|
|
|
| -#if MESSAGE_FINDNEXT_PARTIAL
|
| // We determined message size for the message from its header, so
|
| // we resized the buffer to fit.
|
| EXPECT_GE(reader.input_overflow_buf_.capacity(), message.size());
|
| -#else
|
| - // We couldn't determine message size, so we didn't resize the buffer.
|
| -#endif
|
|
|
| // Write and process payload
|
| reader.AppendData(message.payload(), message.payload_size());
|
| @@ -309,15 +195,9 @@ TEST(ChannelReaderTest, TrimBuffer) {
|
| EXPECT_EQ(ChannelReader::DISPATCH_FINISHED,
|
| reader.ProcessIncomingMessages());
|
|
|
| -#if MESSAGE_FINDNEXT_PARTIAL
|
| // We determined message size for the second (partial) message, so
|
| // we resized the buffer to fit.
|
| EXPECT_GE(reader.input_overflow_buf_.capacity(), message1.size());
|
| -#else
|
| - // We couldn't determine message size for the second (partial) message,
|
| - // so we trimmed the buffer.
|
| - EXPECT_EQ(reader.input_overflow_buf_.capacity(), trimmed_buffer_size);
|
| -#endif
|
| }
|
|
|
| // Buffer resized appropriately if next message is larger than the first.
|
| @@ -339,15 +219,9 @@ TEST(ChannelReaderTest, TrimBuffer) {
|
| EXPECT_EQ(ChannelReader::DISPATCH_FINISHED,
|
| reader.ProcessIncomingMessages());
|
|
|
| -#if MESSAGE_FINDNEXT_PARTIAL
|
| // We determined message size for the second (partial) message, and
|
| // resized the buffer to fit it.
|
| EXPECT_GE(reader.input_overflow_buf_.capacity(), message2.size());
|
| -#else
|
| - // We couldn't determine message size for the second (partial) message,
|
| - // so we trimmed the buffer.
|
| - EXPECT_EQ(reader.input_overflow_buf_.capacity(), trimmed_buffer_size);
|
| -#endif
|
| }
|
|
|
| // Buffer is not trimmed if we've just resized it to accommodate large
|
| @@ -368,14 +242,9 @@ TEST(ChannelReaderTest, TrimBuffer) {
|
| EXPECT_EQ(ChannelReader::DISPATCH_FINISHED,
|
| reader.ProcessIncomingMessages());
|
|
|
| -#if MESSAGE_FINDNEXT_PARTIAL
|
| // We determined message size for the second (partial) message, so
|
| // we resized the buffer to fit.
|
| EXPECT_GE(reader.input_overflow_buf_.capacity(), message2.size());
|
| -#else
|
| - // We couldn't determine size for the second (partial) message, and
|
| - // first message was small, so we did nothing.
|
| -#endif
|
| }
|
| }
|
|
|
|
|