Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: mojo/edk/system/shared_buffer_dispatcher_unittest.cc

Issue 1748503002: [mojo-edk] Add MojoWatch and MojoCancelWatch APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "mojo/edk/system/shared_buffer_dispatcher.h" 5 #include "mojo/edk/system/shared_buffer_dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <limits> 10 #include <limits>
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 static_cast<char*>(mapping1->GetBase())[50] = 'x'; 129 static_cast<char*>(mapping1->GetBase())[50] = 'x';
130 130
131 scoped_ptr<PlatformSharedBufferMapping> mapping2; 131 scoped_ptr<PlatformSharedBufferMapping> mapping2;
132 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer( 132 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer(
133 50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2)); 133 50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2));
134 ASSERT_TRUE(mapping2); 134 ASSERT_TRUE(mapping2);
135 ASSERT_TRUE(mapping2->GetBase()); 135 ASSERT_TRUE(mapping2->GetBase());
136 EXPECT_EQ(50u, mapping2->GetLength()); 136 EXPECT_EQ(50u, mapping2->GetLength());
137 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]); 137 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]);
138 138
139 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 139 Dispatcher::RequestContext request_context;
140 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close(&request_context));
140 141
141 // Check that we can still read/write to mappings after the dispatcher has 142 // Check that we can still read/write to mappings after the dispatcher has
142 // gone away. 143 // gone away.
143 static_cast<char*>(mapping2->GetBase())[1] = 'y'; 144 static_cast<char*>(mapping2->GetBase())[1] = 'y';
144 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]); 145 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]);
145 } 146 }
146 147
147 TEST_F(SharedBufferDispatcherTest, CreateAndMapBufferFromPlatformBuffer) { 148 TEST_F(SharedBufferDispatcherTest, CreateAndMapBufferFromPlatformBuffer) {
148 scoped_refptr<PlatformSharedBuffer> platform_shared_buffer = 149 scoped_refptr<PlatformSharedBuffer> platform_shared_buffer =
149 PlatformSharedBuffer::Create(100); 150 PlatformSharedBuffer::Create(100);
(...skipping 16 matching lines...) Expand all
166 static_cast<char*>(mapping1->GetBase())[50] = 'x'; 167 static_cast<char*>(mapping1->GetBase())[50] = 'x';
167 168
168 scoped_ptr<PlatformSharedBufferMapping> mapping2; 169 scoped_ptr<PlatformSharedBufferMapping> mapping2;
169 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer( 170 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer(
170 50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2)); 171 50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2));
171 ASSERT_TRUE(mapping2); 172 ASSERT_TRUE(mapping2);
172 ASSERT_TRUE(mapping2->GetBase()); 173 ASSERT_TRUE(mapping2->GetBase());
173 EXPECT_EQ(50u, mapping2->GetLength()); 174 EXPECT_EQ(50u, mapping2->GetLength());
174 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]); 175 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]);
175 176
176 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 177 Dispatcher::RequestContext request_context;
178 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close(&request_context));
177 179
178 // Check that we can still read/write to mappings after the dispatcher has 180 // Check that we can still read/write to mappings after the dispatcher has
179 // gone away. 181 // gone away.
180 static_cast<char*>(mapping2->GetBase())[1] = 'y'; 182 static_cast<char*>(mapping2->GetBase())[1] = 'y';
181 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]); 183 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]);
182 } 184 }
183 185
184 TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandle) { 186 TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandle) {
185 scoped_refptr<SharedBufferDispatcher> dispatcher1; 187 scoped_refptr<SharedBufferDispatcher> dispatcher1;
186 EXPECT_EQ(MOJO_RESULT_OK, SharedBufferDispatcher::Create( 188 EXPECT_EQ(MOJO_RESULT_OK, SharedBufferDispatcher::Create(
187 SharedBufferDispatcher::kDefaultCreateOptions, 189 SharedBufferDispatcher::kDefaultCreateOptions,
188 100, &dispatcher1)); 190 100, &dispatcher1));
189 191
190 // Map and write something. 192 // Map and write something.
191 scoped_ptr<PlatformSharedBufferMapping> mapping; 193 scoped_ptr<PlatformSharedBufferMapping> mapping;
192 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->MapBuffer( 194 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->MapBuffer(
193 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 195 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
194 static_cast<char*>(mapping->GetBase())[0] = 'x'; 196 static_cast<char*>(mapping->GetBase())[0] = 'x';
195 mapping.reset(); 197 mapping.reset();
196 198
197 // Duplicate |dispatcher1| and then close it. 199 // Duplicate |dispatcher1| and then close it.
198 scoped_refptr<Dispatcher> dispatcher2; 200 scoped_refptr<Dispatcher> dispatcher2;
199 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->DuplicateBufferHandle( 201 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->DuplicateBufferHandle(
200 nullptr, &dispatcher2)); 202 nullptr, &dispatcher2));
201 ASSERT_TRUE(dispatcher2); 203 ASSERT_TRUE(dispatcher2);
202 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, dispatcher2->GetType()); 204 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, dispatcher2->GetType());
203 205
204 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close()); 206 Dispatcher::RequestContext request_context;
207 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close(&request_context));
205 208
206 // Map |dispatcher2| and read something. 209 // Map |dispatcher2| and read something.
207 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->MapBuffer( 210 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->MapBuffer(
208 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 211 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
209 EXPECT_EQ('x', static_cast<char*>(mapping->GetBase())[0]); 212 EXPECT_EQ('x', static_cast<char*>(mapping->GetBase())[0]);
210 213
211 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close()); 214 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close(&request_context));
212 } 215 }
213 216
214 TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsValid) { 217 TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsValid) {
215 scoped_refptr<SharedBufferDispatcher> dispatcher1; 218 scoped_refptr<SharedBufferDispatcher> dispatcher1;
216 EXPECT_EQ(MOJO_RESULT_OK, SharedBufferDispatcher::Create( 219 EXPECT_EQ(MOJO_RESULT_OK, SharedBufferDispatcher::Create(
217 SharedBufferDispatcher::kDefaultCreateOptions, 220 SharedBufferDispatcher::kDefaultCreateOptions,
218 100, &dispatcher1)); 221 100, &dispatcher1));
219 222
223 Dispatcher::RequestContext request_context;
220 MojoDuplicateBufferHandleOptions options[] = { 224 MojoDuplicateBufferHandleOptions options[] = {
221 {sizeof(MojoDuplicateBufferHandleOptions), 225 {sizeof(MojoDuplicateBufferHandleOptions),
222 MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE}, 226 MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE},
223 {sizeof(MojoDuplicateBufferHandleOptionsFlags), ~0u}}; 227 {sizeof(MojoDuplicateBufferHandleOptionsFlags), ~0u}};
224 for (size_t i = 0; i < MOJO_ARRAYSIZE(options); i++) { 228 for (size_t i = 0; i < MOJO_ARRAYSIZE(options); i++) {
225 scoped_refptr<Dispatcher> dispatcher2; 229 scoped_refptr<Dispatcher> dispatcher2;
226 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->DuplicateBufferHandle( 230 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->DuplicateBufferHandle(
227 &options[i], &dispatcher2)); 231 &options[i], &dispatcher2));
228 ASSERT_TRUE(dispatcher2); 232 ASSERT_TRUE(dispatcher2);
229 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, dispatcher2->GetType()); 233 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, dispatcher2->GetType());
230 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close()); 234 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close(&request_context));
231 } 235 }
232 236
233 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close()); 237 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close(&request_context));
234 } 238 }
235 239
236 TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsInvalid) { 240 TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsInvalid) {
237 scoped_refptr<SharedBufferDispatcher> dispatcher1; 241 scoped_refptr<SharedBufferDispatcher> dispatcher1;
238 EXPECT_EQ(MOJO_RESULT_OK, SharedBufferDispatcher::Create( 242 EXPECT_EQ(MOJO_RESULT_OK, SharedBufferDispatcher::Create(
239 SharedBufferDispatcher::kDefaultCreateOptions, 243 SharedBufferDispatcher::kDefaultCreateOptions,
240 100, &dispatcher1)); 244 100, &dispatcher1));
241 245
242 // Invalid |struct_size|. 246 // Invalid |struct_size|.
243 { 247 {
244 MojoDuplicateBufferHandleOptions options = { 248 MojoDuplicateBufferHandleOptions options = {
245 1u, MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE}; 249 1u, MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE};
246 scoped_refptr<Dispatcher> dispatcher2; 250 scoped_refptr<Dispatcher> dispatcher2;
247 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 251 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
248 dispatcher1->DuplicateBufferHandle(&options, &dispatcher2)); 252 dispatcher1->DuplicateBufferHandle(&options, &dispatcher2));
249 EXPECT_FALSE(dispatcher2); 253 EXPECT_FALSE(dispatcher2);
250 } 254 }
251 255
252 // Unknown |flags|. 256 // Unknown |flags|.
253 { 257 {
254 MojoDuplicateBufferHandleOptions options = { 258 MojoDuplicateBufferHandleOptions options = {
255 sizeof(MojoDuplicateBufferHandleOptions), ~0u}; 259 sizeof(MojoDuplicateBufferHandleOptions), ~0u};
256 scoped_refptr<Dispatcher> dispatcher2; 260 scoped_refptr<Dispatcher> dispatcher2;
257 EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, 261 EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED,
258 dispatcher1->DuplicateBufferHandle(&options, &dispatcher2)); 262 dispatcher1->DuplicateBufferHandle(&options, &dispatcher2));
259 EXPECT_FALSE(dispatcher2); 263 EXPECT_FALSE(dispatcher2);
260 } 264 }
261 265
262 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close()); 266 Dispatcher::RequestContext request_context;
267 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close(&request_context));
263 } 268 }
264 269
265 TEST_F(SharedBufferDispatcherTest, CreateInvalidNumBytes) { 270 TEST_F(SharedBufferDispatcherTest, CreateInvalidNumBytes) {
266 // Size too big. 271 // Size too big.
267 scoped_refptr<SharedBufferDispatcher> dispatcher; 272 scoped_refptr<SharedBufferDispatcher> dispatcher;
268 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 273 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
269 SharedBufferDispatcher::Create( 274 SharedBufferDispatcher::Create(
270 SharedBufferDispatcher::kDefaultCreateOptions, 275 SharedBufferDispatcher::kDefaultCreateOptions,
271 std::numeric_limits<uint64_t>::max(), &dispatcher)); 276 std::numeric_limits<uint64_t>::max(), &dispatcher));
272 EXPECT_FALSE(dispatcher); 277 EXPECT_FALSE(dispatcher);
(...skipping 17 matching lines...) Expand all
290 EXPECT_FALSE(mapping); 295 EXPECT_FALSE(mapping);
291 296
292 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 297 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
293 dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 298 dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
294 EXPECT_FALSE(mapping); 299 EXPECT_FALSE(mapping);
295 300
296 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 301 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
297 dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 302 dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
298 EXPECT_FALSE(mapping); 303 EXPECT_FALSE(mapping);
299 304
300 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 305 Dispatcher::RequestContext request_context;
306 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close(&request_context));
301 } 307 }
302 308
303 } // namespace 309 } // namespace
304 } // namespace edk 310 } // namespace edk
305 } // namespace mojo 311 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698