OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/child/shared_memory_data_consumer_handle.h" | 5 #include "content/child/shared_memory_data_consumer_handle.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 }; | 196 }; |
197 | 197 |
198 class SharedMemoryDataConsumerHandleTest | 198 class SharedMemoryDataConsumerHandleTest |
199 : public ::testing::TestWithParam<BackpressureMode> { | 199 : public ::testing::TestWithParam<BackpressureMode> { |
200 protected: | 200 protected: |
201 void SetUp() override { | 201 void SetUp() override { |
202 handle_.reset(new SharedMemoryDataConsumerHandle(GetParam(), &writer_)); | 202 handle_.reset(new SharedMemoryDataConsumerHandle(GetParam(), &writer_)); |
203 } | 203 } |
204 std::unique_ptr<FixedReceivedData> NewFixedData(const char* s) { | 204 std::unique_ptr<FixedReceivedData> NewFixedData(const char* s) { |
205 auto size = strlen(s); | 205 auto size = strlen(s); |
206 return base::WrapUnique(new FixedReceivedData(s, size, size, size)); | 206 return base::MakeUnique<FixedReceivedData>(s, size, size, size); |
207 } | 207 } |
208 | 208 |
209 StrictMock<MockClient> client_; | 209 StrictMock<MockClient> client_; |
210 std::unique_ptr<SharedMemoryDataConsumerHandle> handle_; | 210 std::unique_ptr<SharedMemoryDataConsumerHandle> handle_; |
211 std::unique_ptr<Writer> writer_; | 211 std::unique_ptr<Writer> writer_; |
212 base::MessageLoop loop_; | 212 base::MessageLoop loop_; |
213 }; | 213 }; |
214 | 214 |
215 void RunPostedTasks() { | 215 void RunPostedTasks() { |
216 base::RunLoop run_loop; | 216 base::RunLoop run_loop; |
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 checkpoint.Call(3); | 900 checkpoint.Call(3); |
901 } | 901 } |
902 | 902 |
903 TEST(SharedMemoryDataConsumerHandleBackpressureTest, Read) { | 903 TEST(SharedMemoryDataConsumerHandleBackpressureTest, Read) { |
904 base::MessageLoop loop; | 904 base::MessageLoop loop; |
905 char buffer[20]; | 905 char buffer[20]; |
906 Result result; | 906 Result result; |
907 size_t size; | 907 size_t size; |
908 | 908 |
909 std::unique_ptr<Writer> writer; | 909 std::unique_ptr<Writer> writer; |
910 auto handle = base::WrapUnique( | 910 auto handle = base::MakeUnique<SharedMemoryDataConsumerHandle>( |
911 new SharedMemoryDataConsumerHandle(kApplyBackpressure, &writer)); | 911 kApplyBackpressure, &writer); |
912 scoped_refptr<Logger> logger(new Logger); | 912 scoped_refptr<Logger> logger(new Logger); |
913 writer->AddData( | 913 writer->AddData( |
914 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger))); | 914 base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger)); |
915 writer->AddData( | 915 writer->AddData( |
916 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger))); | 916 base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger)); |
917 writer->AddData( | 917 writer->AddData( |
918 base::WrapUnique(new LoggingFixedReceivedData("data3", "a ", logger))); | 918 base::MakeUnique<LoggingFixedReceivedData>("data3", "a ", logger)); |
919 writer->AddData( | 919 writer->AddData( |
920 base::WrapUnique(new LoggingFixedReceivedData("data4", "time ", logger))); | 920 base::MakeUnique<LoggingFixedReceivedData>("data4", "time ", logger)); |
921 | 921 |
922 auto reader = handle->obtainReader(nullptr); | 922 auto reader = handle->obtainReader(nullptr); |
923 logger->Add("1"); | 923 logger->Add("1"); |
924 result = reader->read(buffer, 2, kNone, &size); | 924 result = reader->read(buffer, 2, kNone, &size); |
925 EXPECT_EQ(kOk, result); | 925 EXPECT_EQ(kOk, result); |
926 EXPECT_EQ(2u, size); | 926 EXPECT_EQ(2u, size); |
927 logger->Add("2"); | 927 logger->Add("2"); |
928 result = reader->read(buffer, 5, kNone, &size); | 928 result = reader->read(buffer, 5, kNone, &size); |
929 EXPECT_EQ(kOk, result); | 929 EXPECT_EQ(kOk, result); |
930 EXPECT_EQ(5u, size); | 930 EXPECT_EQ(5u, size); |
(...skipping 14 matching lines...) Expand all Loading... |
945 logger->log()); | 945 logger->log()); |
946 } | 946 } |
947 | 947 |
948 TEST(SharedMemoryDataConsumerHandleBackpressureTest, CloseAndReset) { | 948 TEST(SharedMemoryDataConsumerHandleBackpressureTest, CloseAndReset) { |
949 base::MessageLoop loop; | 949 base::MessageLoop loop; |
950 char buffer[20]; | 950 char buffer[20]; |
951 Result result; | 951 Result result; |
952 size_t size; | 952 size_t size; |
953 | 953 |
954 std::unique_ptr<Writer> writer; | 954 std::unique_ptr<Writer> writer; |
955 auto handle = base::WrapUnique( | 955 auto handle = base::MakeUnique<SharedMemoryDataConsumerHandle>( |
956 new SharedMemoryDataConsumerHandle(kApplyBackpressure, &writer)); | 956 kApplyBackpressure, &writer); |
957 scoped_refptr<Logger> logger(new Logger); | 957 scoped_refptr<Logger> logger(new Logger); |
958 writer->AddData( | 958 writer->AddData( |
959 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger))); | 959 base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger)); |
960 writer->AddData( | 960 writer->AddData( |
961 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger))); | 961 base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger)); |
962 writer->AddData( | 962 writer->AddData( |
963 base::WrapUnique(new LoggingFixedReceivedData("data3", "a ", logger))); | 963 base::MakeUnique<LoggingFixedReceivedData>("data3", "a ", logger)); |
964 | 964 |
965 auto reader = handle->obtainReader(nullptr); | 965 auto reader = handle->obtainReader(nullptr); |
966 logger->Add("1"); | 966 logger->Add("1"); |
967 result = reader->read(buffer, 2, kNone, &size); | 967 result = reader->read(buffer, 2, kNone, &size); |
968 EXPECT_EQ(kOk, result); | 968 EXPECT_EQ(kOk, result); |
969 EXPECT_EQ(2u, size); | 969 EXPECT_EQ(2u, size); |
970 logger->Add("2"); | 970 logger->Add("2"); |
971 writer->Close(); | 971 writer->Close(); |
972 logger->Add("3"); | 972 logger->Add("3"); |
973 handle.reset(); | 973 handle.reset(); |
974 reader.reset(); | 974 reader.reset(); |
975 logger->Add("4"); | 975 logger->Add("4"); |
976 | 976 |
977 EXPECT_EQ( | 977 EXPECT_EQ( |
978 "1\n" | 978 "1\n" |
979 "2\n" | 979 "2\n" |
980 "3\n" | 980 "3\n" |
981 "data1 is destructed.\n" | 981 "data1 is destructed.\n" |
982 "data2 is destructed.\n" | 982 "data2 is destructed.\n" |
983 "data3 is destructed.\n" | 983 "data3 is destructed.\n" |
984 "4\n", | 984 "4\n", |
985 logger->log()); | 985 logger->log()); |
986 } | 986 } |
987 | 987 |
988 TEST(SharedMemoryDataConsumerHandleWithoutBackpressureTest, AddData) { | 988 TEST(SharedMemoryDataConsumerHandleWithoutBackpressureTest, AddData) { |
989 base::MessageLoop loop; | 989 base::MessageLoop loop; |
990 std::unique_ptr<Writer> writer; | 990 std::unique_ptr<Writer> writer; |
991 auto handle = base::WrapUnique( | 991 auto handle = base::MakeUnique<SharedMemoryDataConsumerHandle>( |
992 new SharedMemoryDataConsumerHandle(kDoNotApplyBackpressure, &writer)); | 992 kDoNotApplyBackpressure, &writer); |
993 scoped_refptr<Logger> logger(new Logger); | 993 scoped_refptr<Logger> logger(new Logger); |
994 | 994 |
995 logger->Add("1"); | 995 logger->Add("1"); |
996 writer->AddData( | 996 writer->AddData( |
997 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger))); | 997 base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger)); |
998 logger->Add("2"); | 998 logger->Add("2"); |
999 writer->AddData( | 999 writer->AddData( |
1000 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger))); | 1000 base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger)); |
1001 logger->Add("3"); | 1001 logger->Add("3"); |
1002 | 1002 |
1003 EXPECT_EQ( | 1003 EXPECT_EQ( |
1004 "1\n" | 1004 "1\n" |
1005 "data1 is destructed.\n" | 1005 "data1 is destructed.\n" |
1006 "2\n" | 1006 "2\n" |
1007 "data2 is destructed.\n" | 1007 "data2 is destructed.\n" |
1008 "3\n", | 1008 "3\n", |
1009 logger->log()); | 1009 logger->log()); |
1010 } | 1010 } |
1011 | 1011 |
1012 TEST_F(ThreadedSharedMemoryDataConsumerHandleTest, Read) { | 1012 TEST_F(ThreadedSharedMemoryDataConsumerHandleTest, Read) { |
1013 base::RunLoop run_loop; | 1013 base::RunLoop run_loop; |
1014 auto operation = base::WrapUnique(new ReadDataOperation( | 1014 auto operation = base::MakeUnique<ReadDataOperation>( |
1015 std::move(handle_), &loop_, run_loop.QuitClosure())); | 1015 std::move(handle_), &loop_, run_loop.QuitClosure()); |
1016 scoped_refptr<Logger> logger(new Logger); | 1016 scoped_refptr<Logger> logger(new Logger); |
1017 | 1017 |
1018 base::Thread t("DataConsumerHandle test thread"); | 1018 base::Thread t("DataConsumerHandle test thread"); |
1019 ASSERT_TRUE(t.Start()); | 1019 ASSERT_TRUE(t.Start()); |
1020 | 1020 |
1021 t.task_runner()->PostTask(FROM_HERE, | 1021 t.task_runner()->PostTask(FROM_HERE, |
1022 base::Bind(&ReadDataOperation::ReadData, | 1022 base::Bind(&ReadDataOperation::ReadData, |
1023 base::Unretained(operation.get()))); | 1023 base::Unretained(operation.get()))); |
1024 | 1024 |
1025 logger->Add("1"); | 1025 logger->Add("1"); |
1026 writer_->AddData( | 1026 writer_->AddData( |
1027 base::WrapUnique(new LoggingFixedReceivedData("data1", "Once ", logger))); | 1027 base::MakeUnique<LoggingFixedReceivedData>("data1", "Once ", logger)); |
1028 writer_->AddData( | 1028 writer_->AddData( |
1029 base::WrapUnique(new LoggingFixedReceivedData("data2", "upon ", logger))); | 1029 base::MakeUnique<LoggingFixedReceivedData>("data2", "upon ", logger)); |
1030 writer_->AddData(base::WrapUnique( | |
1031 new LoggingFixedReceivedData("data3", "a time ", logger))); | |
1032 writer_->AddData(base::WrapUnique( | |
1033 new LoggingFixedReceivedData("data4", "there ", logger))); | |
1034 writer_->AddData( | 1030 writer_->AddData( |
1035 base::WrapUnique(new LoggingFixedReceivedData("data5", "was ", logger))); | 1031 base::MakeUnique<LoggingFixedReceivedData>("data3", "a time ", logger)); |
| 1032 writer_->AddData( |
| 1033 base::MakeUnique<LoggingFixedReceivedData>("data4", "there ", logger)); |
| 1034 writer_->AddData( |
| 1035 base::MakeUnique<LoggingFixedReceivedData>("data5", "was ", logger)); |
1036 writer_->Close(); | 1036 writer_->Close(); |
1037 logger->Add("2"); | 1037 logger->Add("2"); |
1038 | 1038 |
1039 run_loop.Run(); | 1039 run_loop.Run(); |
1040 t.Stop(); | 1040 t.Stop(); |
1041 | 1041 |
1042 EXPECT_EQ("Once upon a time there was ", operation->result()); | 1042 EXPECT_EQ("Once upon a time there was ", operation->result()); |
1043 EXPECT_EQ( | 1043 EXPECT_EQ( |
1044 "1\n" | 1044 "1\n" |
1045 "2\n" | 1045 "2\n" |
1046 "data1 is destructed.\n" | 1046 "data1 is destructed.\n" |
1047 "data2 is destructed.\n" | 1047 "data2 is destructed.\n" |
1048 "data3 is destructed.\n" | 1048 "data3 is destructed.\n" |
1049 "data4 is destructed.\n" | 1049 "data4 is destructed.\n" |
1050 "data5 is destructed.\n", | 1050 "data5 is destructed.\n", |
1051 logger->log()); | 1051 logger->log()); |
1052 } | 1052 } |
1053 | 1053 |
1054 INSTANTIATE_TEST_CASE_P(SharedMemoryDataConsumerHandleTest, | 1054 INSTANTIATE_TEST_CASE_P(SharedMemoryDataConsumerHandleTest, |
1055 SharedMemoryDataConsumerHandleTest, | 1055 SharedMemoryDataConsumerHandleTest, |
1056 ::testing::Values(kApplyBackpressure, | 1056 ::testing::Values(kApplyBackpressure, |
1057 kDoNotApplyBackpressure)); | 1057 kDoNotApplyBackpressure)); |
1058 } // namespace | 1058 } // namespace |
1059 | 1059 |
1060 } // namespace content | 1060 } // namespace content |
OLD | NEW |