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 <string.h> | 5 #include <string.h> |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 // Reads a single message with a shared buffer handle, maps the buffer, copies | 56 // Reads a single message with a shared buffer handle, maps the buffer, copies |
57 // the message contents into it, then exits. | 57 // the message contents into it, then exits. |
58 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(CopyToBufferClient, SharedBufferTest, h) { | 58 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(CopyToBufferClient, SharedBufferTest, h) { |
59 MojoHandle b; | 59 MojoHandle b; |
60 std::string message = ReadMessageWithHandles(h, &b, 1); | 60 std::string message = ReadMessageWithHandles(h, &b, 1); |
61 WriteToBuffer(b, 0, message); | 61 WriteToBuffer(b, 0, message); |
62 | 62 |
63 EXPECT_EQ("quit", ReadMessage(h)); | 63 EXPECT_EQ("quit", ReadMessage(h)); |
64 } | 64 } |
65 | 65 |
66 #if defined(OS_ANDROID) | 66 TEST_F(SharedBufferTest, PassSharedBufferCrossProcess) { |
67 // Android multi-process tests are not executing the new process. This is flaky. | |
68 #define MAYBE_PassSharedBufferCrossProcess DISABLED_PassSharedBufferCrossProcess | |
69 #else | |
70 #define MAYBE_PassSharedBufferCrossProcess PassSharedBufferCrossProcess | |
71 #endif | |
72 TEST_F(SharedBufferTest, MAYBE_PassSharedBufferCrossProcess) { | |
73 const std::string message = "hello"; | 67 const std::string message = "hello"; |
74 MojoHandle b = CreateBuffer(message.size()); | 68 MojoHandle b = CreateBuffer(message.size()); |
75 | 69 |
76 RUN_CHILD_ON_PIPE(CopyToBufferClient, h) | 70 RUN_CHILD_ON_PIPE(CopyToBufferClient, h) |
77 MojoHandle dupe = DuplicateBuffer(b, false); | 71 MojoHandle dupe = DuplicateBuffer(b, false); |
78 WriteMessageWithHandles(h, message, &dupe, 1); | 72 WriteMessageWithHandles(h, message, &dupe, 1); |
79 WriteMessage(h, "quit"); | 73 WriteMessage(h, "quit"); |
80 END_CHILD() | 74 END_CHILD() |
81 | 75 |
82 ExpectBufferContents(b, 0, message); | 76 ExpectBufferContents(b, 0, message); |
83 } | 77 } |
84 | 78 |
85 // Creates a new buffer, maps it, writes a message contents to it, unmaps it, | 79 // Creates a new buffer, maps it, writes a message contents to it, unmaps it, |
86 // and finally passes it back to the parent. | 80 // and finally passes it back to the parent. |
87 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(CreateBufferClient, SharedBufferTest, h) { | 81 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(CreateBufferClient, SharedBufferTest, h) { |
88 std::string message = ReadMessage(h); | 82 std::string message = ReadMessage(h); |
89 MojoHandle b = CreateBuffer(message.size()); | 83 MojoHandle b = CreateBuffer(message.size()); |
90 WriteToBuffer(b, 0, message); | 84 WriteToBuffer(b, 0, message); |
91 WriteMessageWithHandles(h, "have a buffer", &b, 1); | 85 WriteMessageWithHandles(h, "have a buffer", &b, 1); |
92 | 86 |
93 EXPECT_EQ("quit", ReadMessage(h)); | 87 EXPECT_EQ("quit", ReadMessage(h)); |
94 } | 88 } |
95 | 89 |
96 #if defined(OS_ANDROID) | 90 TEST_F(SharedBufferTest, PassSharedBufferFromChild) { |
97 // Android multi-process tests are not executing the new process. This is flaky. | |
98 #define MAYBE_PassSharedBufferFromChild DISABLED_PassSharedBufferFromChild | |
99 #else | |
100 #define MAYBE_PassSharedBufferFromChild PassSharedBufferFromChild | |
101 #endif | |
102 TEST_F(SharedBufferTest, MAYBE_PassSharedBufferFromChild) { | |
103 const std::string message = "hello"; | 91 const std::string message = "hello"; |
104 MojoHandle b; | 92 MojoHandle b; |
105 RUN_CHILD_ON_PIPE(CreateBufferClient, h) | 93 RUN_CHILD_ON_PIPE(CreateBufferClient, h) |
106 WriteMessage(h, message); | 94 WriteMessage(h, message); |
107 ReadMessageWithHandles(h, &b, 1); | 95 ReadMessageWithHandles(h, &b, 1); |
108 WriteMessage(h, "quit"); | 96 WriteMessage(h, "quit"); |
109 END_CHILD() | 97 END_CHILD() |
110 | 98 |
111 ExpectBufferContents(b, 0, message); | 99 ExpectBufferContents(b, 0, message); |
112 } | 100 } |
(...skipping 24 matching lines...) Expand all Loading... |
137 // Receive a shared buffer from the other child. | 125 // Receive a shared buffer from the other child. |
138 MojoHandle b; | 126 MojoHandle b; |
139 ReadMessageWithHandles(other_child, &b, 1); | 127 ReadMessageWithHandles(other_child, &b, 1); |
140 | 128 |
141 // Write the message from the parent into the buffer and exit. | 129 // Write the message from the parent into the buffer and exit. |
142 WriteToBuffer(b, 0, message); | 130 WriteToBuffer(b, 0, message); |
143 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(b)); | 131 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(b)); |
144 EXPECT_EQ("quit", ReadMessage(h)); | 132 EXPECT_EQ("quit", ReadMessage(h)); |
145 } | 133 } |
146 | 134 |
147 #if defined(OS_ANDROID) | 135 TEST_F(SharedBufferTest, PassSharedBufferFromChildToChild) { |
148 // Android multi-process tests are not executing the new process. This is flaky. | |
149 #define MAYBE_PassSharedBufferFromChildToChild \ | |
150 DISABLED_PassSharedBufferFromChildToChild | |
151 #else | |
152 #define MAYBE_PassSharedBufferFromChildToChild PassSharedBufferFromChildToChild | |
153 #endif | |
154 TEST_F(SharedBufferTest, MAYBE_PassSharedBufferFromChildToChild) { | |
155 const std::string message = "hello"; | 136 const std::string message = "hello"; |
156 MojoHandle p0, p1; | 137 MojoHandle p0, p1; |
157 CreateMessagePipe(&p0, &p1); | 138 CreateMessagePipe(&p0, &p1); |
158 | 139 |
159 MojoHandle b; | 140 MojoHandle b; |
160 RUN_CHILD_ON_PIPE(CreateAndPassBuffer, h0) | 141 RUN_CHILD_ON_PIPE(CreateAndPassBuffer, h0) |
161 RUN_CHILD_ON_PIPE(ReceiveAndEditBuffer, h1) | 142 RUN_CHILD_ON_PIPE(ReceiveAndEditBuffer, h1) |
162 // Send one end of the pipe to each child. The first child will create | 143 // Send one end of the pipe to each child. The first child will create |
163 // and pass a buffer to the second child and back to us. The second child | 144 // and pass a buffer to the second child and back to us. The second child |
164 // will write our message into the buffer. | 145 // will write our message into the buffer. |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 WriteMessage(h, "quit"); | 309 WriteMessage(h, "quit"); |
329 EXPECT_EQ("ok", ReadMessage(h)); | 310 EXPECT_EQ("ok", ReadMessage(h)); |
330 END_CHILD() | 311 END_CHILD() |
331 } | 312 } |
332 | 313 |
333 #endif // !defined(OS_IOS) | 314 #endif // !defined(OS_IOS) |
334 | 315 |
335 } // namespace | 316 } // namespace |
336 } // namespace edk | 317 } // namespace edk |
337 } // namespace mojo | 318 } // namespace mojo |
OLD | NEW |