| OLD | NEW |
| 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/system/shared_buffer_dispatcher.h" | 5 #include "mojo/system/shared_buffer_dispatcher.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "mojo/system/dispatcher.h" | 10 #include "mojo/system/dispatcher.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 &validated_options)); | 94 &validated_options)); |
| 95 | 95 |
| 96 scoped_refptr<SharedBufferDispatcher> dispatcher; | 96 scoped_refptr<SharedBufferDispatcher> dispatcher; |
| 97 EXPECT_EQ(MOJO_RESULT_OK, | 97 EXPECT_EQ(MOJO_RESULT_OK, |
| 98 SharedBufferDispatcher::Create(validated_options, 100, | 98 SharedBufferDispatcher::Create(validated_options, 100, |
| 99 &dispatcher)); | 99 &dispatcher)); |
| 100 ASSERT_TRUE(dispatcher); | 100 ASSERT_TRUE(dispatcher); |
| 101 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher->GetType()); | 101 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher->GetType()); |
| 102 | 102 |
| 103 // Make a couple of mappings. | 103 // Make a couple of mappings. |
| 104 scoped_ptr<RawSharedBuffer::Mapping> mapping1; | 104 scoped_ptr<RawSharedBufferMapping> mapping1; |
| 105 EXPECT_EQ(MOJO_RESULT_OK, | 105 EXPECT_EQ(MOJO_RESULT_OK, |
| 106 dispatcher->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, | 106 dispatcher->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, |
| 107 &mapping1)); | 107 &mapping1)); |
| 108 ASSERT_TRUE(mapping1); | 108 ASSERT_TRUE(mapping1); |
| 109 ASSERT_TRUE(mapping1->base()); | 109 ASSERT_TRUE(mapping1->base()); |
| 110 EXPECT_EQ(100u, mapping1->length()); | 110 EXPECT_EQ(100u, mapping1->length()); |
| 111 // Write something. | 111 // Write something. |
| 112 static_cast<char*>(mapping1->base())[50] = 'x'; | 112 static_cast<char*>(mapping1->base())[50] = 'x'; |
| 113 | 113 |
| 114 scoped_ptr<RawSharedBuffer::Mapping> mapping2; | 114 scoped_ptr<RawSharedBufferMapping> mapping2; |
| 115 EXPECT_EQ(MOJO_RESULT_OK, | 115 EXPECT_EQ(MOJO_RESULT_OK, |
| 116 dispatcher->MapBuffer(50, 50, MOJO_MAP_BUFFER_FLAG_NONE, | 116 dispatcher->MapBuffer(50, 50, MOJO_MAP_BUFFER_FLAG_NONE, |
| 117 &mapping2)); | 117 &mapping2)); |
| 118 ASSERT_TRUE(mapping2); | 118 ASSERT_TRUE(mapping2); |
| 119 ASSERT_TRUE(mapping2->base()); | 119 ASSERT_TRUE(mapping2->base()); |
| 120 EXPECT_EQ(50u, mapping2->length()); | 120 EXPECT_EQ(50u, mapping2->length()); |
| 121 EXPECT_EQ('x', static_cast<char*>(mapping2->base())[0]); | 121 EXPECT_EQ('x', static_cast<char*>(mapping2->base())[0]); |
| 122 | 122 |
| 123 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); | 123 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); |
| 124 | 124 |
| 125 // Check that we can still read/write to mappings after the dispatcher has | 125 // Check that we can still read/write to mappings after the dispatcher has |
| 126 // gone away. | 126 // gone away. |
| 127 static_cast<char*>(mapping2->base())[1] = 'y'; | 127 static_cast<char*>(mapping2->base())[1] = 'y'; |
| 128 EXPECT_EQ('y', static_cast<char*>(mapping1->base())[51]); | 128 EXPECT_EQ('y', static_cast<char*>(mapping1->base())[51]); |
| 129 } | 129 } |
| 130 | 130 |
| 131 TEST(SharedBufferDispatcher, DuplicateBufferHandle) { | 131 TEST(SharedBufferDispatcher, DuplicateBufferHandle) { |
| 132 MojoCreateSharedBufferOptions validated_options = { 0 }; | 132 MojoCreateSharedBufferOptions validated_options = { 0 }; |
| 133 EXPECT_EQ(MOJO_RESULT_OK, | 133 EXPECT_EQ(MOJO_RESULT_OK, |
| 134 SharedBufferDispatcher::ValidateOptions(NULL, | 134 SharedBufferDispatcher::ValidateOptions(NULL, |
| 135 &validated_options)); | 135 &validated_options)); |
| 136 | 136 |
| 137 scoped_refptr<SharedBufferDispatcher> dispatcher1; | 137 scoped_refptr<SharedBufferDispatcher> dispatcher1; |
| 138 EXPECT_EQ(MOJO_RESULT_OK, | 138 EXPECT_EQ(MOJO_RESULT_OK, |
| 139 SharedBufferDispatcher::Create(validated_options, 100, | 139 SharedBufferDispatcher::Create(validated_options, 100, |
| 140 &dispatcher1)); | 140 &dispatcher1)); |
| 141 | 141 |
| 142 // Map and write something. | 142 // Map and write something. |
| 143 scoped_ptr<RawSharedBuffer::Mapping> mapping; | 143 scoped_ptr<RawSharedBufferMapping> mapping; |
| 144 EXPECT_EQ(MOJO_RESULT_OK, | 144 EXPECT_EQ(MOJO_RESULT_OK, |
| 145 dispatcher1->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, | 145 dispatcher1->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, |
| 146 &mapping)); | 146 &mapping)); |
| 147 static_cast<char*>(mapping->base())[0] = 'x'; | 147 static_cast<char*>(mapping->base())[0] = 'x'; |
| 148 mapping.reset(); | 148 mapping.reset(); |
| 149 | 149 |
| 150 // Duplicate |dispatcher1| and then close it. | 150 // Duplicate |dispatcher1| and then close it. |
| 151 scoped_refptr<Dispatcher> dispatcher2; | 151 scoped_refptr<Dispatcher> dispatcher2; |
| 152 EXPECT_EQ(MOJO_RESULT_OK, | 152 EXPECT_EQ(MOJO_RESULT_OK, |
| 153 dispatcher1->DuplicateBufferHandle(NULL, &dispatcher2)); | 153 dispatcher1->DuplicateBufferHandle(NULL, &dispatcher2)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 MojoCreateSharedBufferOptions validated_options = { 0 }; | 191 MojoCreateSharedBufferOptions validated_options = { 0 }; |
| 192 EXPECT_EQ(MOJO_RESULT_OK, | 192 EXPECT_EQ(MOJO_RESULT_OK, |
| 193 SharedBufferDispatcher::ValidateOptions(NULL, | 193 SharedBufferDispatcher::ValidateOptions(NULL, |
| 194 &validated_options)); | 194 &validated_options)); |
| 195 | 195 |
| 196 scoped_refptr<SharedBufferDispatcher> dispatcher; | 196 scoped_refptr<SharedBufferDispatcher> dispatcher; |
| 197 EXPECT_EQ(MOJO_RESULT_OK, | 197 EXPECT_EQ(MOJO_RESULT_OK, |
| 198 SharedBufferDispatcher::Create(validated_options, 100, | 198 SharedBufferDispatcher::Create(validated_options, 100, |
| 199 &dispatcher)); | 199 &dispatcher)); |
| 200 | 200 |
| 201 scoped_ptr<RawSharedBuffer::Mapping> mapping; | 201 scoped_ptr<RawSharedBufferMapping> mapping; |
| 202 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 202 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 203 dispatcher->MapBuffer(0, 101, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); | 203 dispatcher->MapBuffer(0, 101, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); |
| 204 EXPECT_FALSE(mapping); | 204 EXPECT_FALSE(mapping); |
| 205 | 205 |
| 206 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 206 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 207 dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); | 207 dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); |
| 208 EXPECT_FALSE(mapping); | 208 EXPECT_FALSE(mapping); |
| 209 | 209 |
| 210 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 210 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 211 dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); | 211 dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); |
| 212 EXPECT_FALSE(mapping); | 212 EXPECT_FALSE(mapping); |
| 213 | 213 |
| 214 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); | 214 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); |
| 215 } | 215 } |
| 216 | 216 |
| 217 // TODO(vtl): Test |DuplicateBufferHandle()| with invalid |options|. | 217 // TODO(vtl): Test |DuplicateBufferHandle()| with invalid |options|. |
| 218 | 218 |
| 219 } // namespace | 219 } // namespace |
| 220 } // namespace system | 220 } // namespace system |
| 221 } // namespace mojo | 221 } // namespace mojo |
| 222 | 222 |
| OLD | NEW |