| Index: content/child/shared_memory_data_consumer_handle_unittest.cc
|
| diff --git a/content/child/shared_memory_data_consumer_handle_unittest.cc b/content/child/shared_memory_data_consumer_handle_unittest.cc
|
| index 8617aa529cf2b01d95ac9f2bec33cf043948bbf1..1341452c1d3b8d4da7e0742e71840e014fc9a488 100644
|
| --- a/content/child/shared_memory_data_consumer_handle_unittest.cc
|
| +++ b/content/child/shared_memory_data_consumer_handle_unittest.cc
|
| @@ -119,7 +119,7 @@ class ThreadedSharedMemoryDataConsumerHandleTest : public ::testing::Test {
|
| void ReadData() {
|
| if (!client_) {
|
| client_.reset(new ClientImpl(this));
|
| - handle_->registerClient(client_.get());
|
| + reader_ = handle_->obtainReader(client_.get());
|
| }
|
|
|
| Result rv = kOk;
|
| @@ -127,7 +127,7 @@ class ThreadedSharedMemoryDataConsumerHandleTest : public ::testing::Test {
|
|
|
| while (true) {
|
| char buffer[16];
|
| - rv = handle_->read(&buffer, sizeof(buffer), kNone, &read_size);
|
| + rv = reader_->read(&buffer, sizeof(buffer), kNone, &read_size);
|
| if (rv != kOk)
|
| break;
|
| result_.insert(result_.size(), &buffer[0], read_size);
|
| @@ -144,11 +144,13 @@ class ThreadedSharedMemoryDataConsumerHandleTest : public ::testing::Test {
|
| }
|
|
|
| // The operation is done.
|
| + reader_.reset();
|
| main_message_loop_->PostTask(FROM_HERE, on_done_);
|
| }
|
|
|
| private:
|
| scoped_ptr<WebDataConsumerHandle> handle_;
|
| + scoped_ptr<WebDataConsumerHandle::Reader> reader_;
|
| scoped_ptr<WebDataConsumerHandle::Client> client_;
|
| base::MessageLoop* main_message_loop_;
|
| base::Closure on_done_;
|
| @@ -161,7 +163,7 @@ class ThreadedSharedMemoryDataConsumerHandleTest : public ::testing::Test {
|
| }
|
|
|
| StrictMock<MockClient> client_;
|
| - scoped_ptr<WebDataConsumerHandle> handle_;
|
| + scoped_ptr<SharedMemoryDataConsumerHandle> handle_;
|
| scoped_ptr<Writer> writer_;
|
| base::MessageLoop loop_;
|
| };
|
| @@ -185,7 +187,8 @@ class SharedMemoryDataConsumerHandleTest
|
| TEST_P(SharedMemoryDataConsumerHandleTest, ReadFromEmpty) {
|
| char buffer[4];
|
| size_t read = 88;
|
| - Result result = handle_->read(buffer, 4, kNone, &read);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + Result result = reader->read(buffer, 4, kNone, &read);
|
|
|
| EXPECT_EQ(kShouldWait, result);
|
| EXPECT_EQ(0u, read);
|
| @@ -196,7 +199,8 @@ TEST_P(SharedMemoryDataConsumerHandleTest, AutoClose) {
|
| size_t read = 88;
|
|
|
| writer_.reset();
|
| - Result result = handle_->read(buffer, 4, kNone, &read);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + Result result = reader->read(buffer, 4, kNone, &read);
|
|
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, read);
|
| @@ -207,24 +211,25 @@ TEST_P(SharedMemoryDataConsumerHandleTest, ReadSimple) {
|
|
|
| char buffer[4] = {};
|
| size_t read = 88;
|
| - Result result = handle_->read(buffer, 3, kNone, &read);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + Result result = reader->read(buffer, 3, kNone, &read);
|
|
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(3u, read);
|
| EXPECT_STREQ("hel", buffer);
|
|
|
| - result = handle_->read(buffer, 3, kNone, &read);
|
| + result = reader->read(buffer, 3, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(2u, read);
|
| EXPECT_STREQ("lol", buffer);
|
|
|
| - result = handle_->read(buffer, 3, kNone, &read);
|
| + result = reader->read(buffer, 3, kNone, &read);
|
| EXPECT_EQ(kShouldWait, result);
|
| EXPECT_EQ(0u, read);
|
|
|
| writer_->Close();
|
|
|
| - result = handle_->read(buffer, 3, kNone, &read);
|
| + result = reader->read(buffer, 3, kNone, &read);
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, read);
|
| }
|
| @@ -235,13 +240,14 @@ TEST_P(SharedMemoryDataConsumerHandleTest, CloseBeforeReading) {
|
|
|
| char buffer[20] = {};
|
| size_t read = 88;
|
| - Result result = handle_->read(buffer, sizeof(buffer), kNone, &read);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + Result result = reader->read(buffer, sizeof(buffer), kNone, &read);
|
|
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(5u, read);
|
| EXPECT_STREQ("hello", buffer);
|
|
|
| - result = handle_->read(buffer, sizeof(buffer), kNone, &read);
|
| + result = reader->read(buffer, sizeof(buffer), kNone, &read);
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, read);
|
| }
|
| @@ -260,37 +266,38 @@ TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleData) {
|
| size_t read;
|
| Result result;
|
|
|
| + auto reader = handle_->obtainReader(nullptr);
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 6, kNone, &read);
|
| + result = reader->read(buffer, 6, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(6u, read);
|
| EXPECT_STREQ("Once u", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 2, kNone, &read);
|
| + result = reader->read(buffer, 2, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(2u, read);
|
| EXPECT_STREQ("po", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 9, kNone, &read);
|
| + result = reader->read(buffer, 9, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(9u, read);
|
| EXPECT_STREQ("n a time ", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 3, kNone, &read);
|
| + result = reader->read(buffer, 3, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(3u, read);
|
| EXPECT_STREQ("the", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 20, kNone, &read);
|
| + result = reader->read(buffer, 20, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(9u, read);
|
| EXPECT_STREQ("re was a ", buffer);
|
|
|
| - result = handle_->read(buffer, sizeof(buffer), kNone, &read);
|
| + result = reader->read(buffer, sizeof(buffer), kNone, &read);
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, read);
|
| }
|
| @@ -303,20 +310,21 @@ TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleDataInteractively) {
|
| size_t read;
|
| Result result;
|
|
|
| + auto reader = handle_->obtainReader(nullptr);
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 6, kNone, &read);
|
| + result = reader->read(buffer, 6, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(6u, read);
|
| EXPECT_STREQ("Once u", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 2, kNone, &read);
|
| + result = reader->read(buffer, 2, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(2u, read);
|
| EXPECT_STREQ("po", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 9, kNone, &read);
|
| + result = reader->read(buffer, 9, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(2u, read);
|
| EXPECT_STREQ("n ", buffer);
|
| @@ -324,7 +332,7 @@ TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleDataInteractively) {
|
| writer_->AddData(NewFixedData("a "));
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 1, kNone, &read);
|
| + result = reader->read(buffer, 1, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(1u, read);
|
| EXPECT_STREQ("a", buffer);
|
| @@ -336,18 +344,18 @@ TEST_P(SharedMemoryDataConsumerHandleTest, AddMultipleDataInteractively) {
|
| writer_->Close();
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 9, kNone, &read);
|
| + result = reader->read(buffer, 9, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(9u, read);
|
| EXPECT_STREQ(" time the", buffer);
|
|
|
| std::fill(&buffer[0], &buffer[arraysize(buffer)], 0);
|
| - result = handle_->read(buffer, 20, kNone, &read);
|
| + result = reader->read(buffer, 20, kNone, &read);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(9u, read);
|
| EXPECT_STREQ("re was a ", buffer);
|
|
|
| - result = handle_->read(buffer, sizeof(buffer), kNone, &read);
|
| + result = reader->read(buffer, sizeof(buffer), kNone, &read);
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, read);
|
| }
|
| @@ -362,7 +370,7 @@ TEST_P(SharedMemoryDataConsumerHandleTest, RegisterClient) {
|
| EXPECT_CALL(checkpoint, Call(2));
|
|
|
| checkpoint.Call(0);
|
| - handle_->registerClient(&client_);
|
| + auto reader = handle_->obtainReader(&client_);
|
| checkpoint.Call(1);
|
| writer_->Close();
|
| checkpoint.Call(2);
|
| @@ -374,13 +382,12 @@ TEST_P(SharedMemoryDataConsumerHandleTest, RegisterClientWhenDataExists) {
|
| InSequence s;
|
| EXPECT_CALL(checkpoint, Call(0));
|
| EXPECT_CALL(checkpoint, Call(1));
|
| - EXPECT_CALL(client_, didGetReadable());
|
| EXPECT_CALL(checkpoint, Call(2));
|
|
|
| checkpoint.Call(0);
|
| writer_->AddData(NewFixedData("Once "));
|
| checkpoint.Call(1);
|
| - handle_->registerClient(&client_);
|
| + auto reader = handle_->obtainReader(&client_);
|
| checkpoint.Call(2);
|
| }
|
|
|
| @@ -401,13 +408,13 @@ TEST_P(SharedMemoryDataConsumerHandleTest, AddDataWhenClientIsRegistered) {
|
| EXPECT_CALL(checkpoint, Call(5));
|
|
|
| checkpoint.Call(0);
|
| - handle_->registerClient(&client_);
|
| + auto reader = handle_->obtainReader(&client_);
|
| checkpoint.Call(1);
|
| writer_->AddData(NewFixedData("Once "));
|
| checkpoint.Call(2);
|
| writer_->AddData(NewFixedData("upon "));
|
| checkpoint.Call(3);
|
| - result = handle_->read(buffer, sizeof(buffer), kNone, &size);
|
| + result = reader->read(buffer, sizeof(buffer), kNone, &size);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(10u, size);
|
| checkpoint.Call(4);
|
| @@ -426,7 +433,7 @@ TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithClientAndData) {
|
| EXPECT_CALL(checkpoint, Call(3));
|
|
|
| checkpoint.Call(0);
|
| - handle_->registerClient(&client_);
|
| + auto reader = handle_->obtainReader(&client_);
|
| checkpoint.Call(1);
|
| writer_->AddData(NewFixedData("Once "));
|
| checkpoint.Call(2);
|
| @@ -434,7 +441,7 @@ TEST_P(SharedMemoryDataConsumerHandleTest, CloseWithClientAndData) {
|
| checkpoint.Call(3);
|
| }
|
|
|
| -TEST_P(SharedMemoryDataConsumerHandleTest, UnregisterClient) {
|
| +TEST_P(SharedMemoryDataConsumerHandleTest, ReleaseReader) {
|
| Checkpoint checkpoint;
|
|
|
| InSequence s;
|
| @@ -443,9 +450,9 @@ TEST_P(SharedMemoryDataConsumerHandleTest, UnregisterClient) {
|
| EXPECT_CALL(checkpoint, Call(2));
|
|
|
| checkpoint.Call(0);
|
| - handle_->registerClient(&client_);
|
| + auto reader = handle_->obtainReader(&client_);
|
| checkpoint.Call(1);
|
| - handle_->unregisterClient();
|
| + reader.reset();
|
| writer_->AddData(NewFixedData("Once "));
|
| checkpoint.Call(2);
|
| }
|
| @@ -455,7 +462,8 @@ TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadShouldWait) {
|
| const void* buffer = &result;
|
| size_t size = 99;
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kShouldWait, result);
|
| EXPECT_EQ(nullptr, buffer);
|
| EXPECT_EQ(0u, size);
|
| @@ -468,28 +476,29 @@ TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadSimple) {
|
| const void* buffer = &result;
|
| size_t size = 99;
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(5u, size);
|
| EXPECT_EQ("Once ", ToString(buffer, 5));
|
|
|
| - handle_->endRead(1);
|
| + reader->endRead(1);
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(4u, size);
|
| EXPECT_EQ("nce ", ToString(buffer, 4));
|
|
|
| - handle_->endRead(4);
|
| + reader->endRead(4);
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kShouldWait, result);
|
| EXPECT_EQ(0u, size);
|
| EXPECT_EQ(nullptr, buffer);
|
|
|
| writer_->Close();
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, size);
|
| EXPECT_EQ(nullptr, buffer);
|
| @@ -503,35 +512,36 @@ TEST_P(SharedMemoryDataConsumerHandleTest, TwoPhaseReadWithMultipleData) {
|
| const void* buffer = &result;
|
| size_t size = 99;
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + auto reader = handle_->obtainReader(nullptr);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(5u, size);
|
| EXPECT_EQ("Once ", ToString(buffer, 5));
|
|
|
| - handle_->endRead(1);
|
| + reader->endRead(1);
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(4u, size);
|
| EXPECT_EQ("nce ", ToString(buffer, 4));
|
|
|
| - handle_->endRead(4);
|
| + reader->endRead(4);
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kOk, result);
|
| EXPECT_EQ(5u, size);
|
| EXPECT_EQ("upon ", ToString(buffer, 5));
|
|
|
| - handle_->endRead(5);
|
| + reader->endRead(5);
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kShouldWait, result);
|
| EXPECT_EQ(0u, size);
|
| EXPECT_EQ(nullptr, buffer);
|
|
|
| writer_->Close();
|
|
|
| - result = handle_->beginRead(&buffer, kNone, &size);
|
| + result = reader->beginRead(&buffer, kNone, &size);
|
| EXPECT_EQ(kDone, result);
|
| EXPECT_EQ(0u, size);
|
| EXPECT_EQ(nullptr, buffer);
|
|
|