123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Copyright 2014 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 "ipc/ipc_test_channel_listener.h"
- #include "base/run_loop.h"
- #include "ipc/ipc_message.h"
- #include "ipc/ipc_sender.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace IPC {
- // static
- void TestChannelListener::SendOneMessage(IPC::Sender* sender,
- const char* text) {
- static int message_index = 0;
- IPC::Message* message = new IPC::Message(0,
- 2,
- IPC::Message::PRIORITY_NORMAL);
- message->WriteInt(message_index++);
- message->WriteString(std::string(text));
- // Make sure we can handle large messages.
- char junk[kLongMessageStringNumBytes];
- memset(junk, 'a', sizeof(junk)-1);
- junk[sizeof(junk)-1] = 0;
- message->WriteString(std::string(junk));
- sender->Send(message);
- }
- bool TestChannelListener::OnMessageReceived(const IPC::Message& message) {
- base::PickleIterator iter(message);
- int ignored;
- EXPECT_TRUE(iter.ReadInt(&ignored));
- std::string data;
- EXPECT_TRUE(iter.ReadString(&data));
- std::string big_string;
- EXPECT_TRUE(iter.ReadString(&big_string));
- EXPECT_EQ(kLongMessageStringNumBytes - 1, big_string.length());
- SendNextMessage();
- return true;
- }
- void TestChannelListener::OnChannelError() {
- // There is a race when closing the channel so the last message may be lost.
- EXPECT_LE(messages_left_, 1);
- base::RunLoop::QuitCurrentWhenIdleDeprecated();
- }
- void TestChannelListener::SendNextMessage() {
- if (--messages_left_ <= 0)
- base::RunLoop::QuitCurrentWhenIdleDeprecated();
- else
- SendOneMessage(sender_, "Foo");
- }
- }
|