OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/browser/blob_storage/blob_dispatcher_host.h" | 5 #include "content/browser/blob_storage/blob_dispatcher_host.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
| 8 #include <tuple> |
8 #include <vector> | 9 #include <vector> |
9 | 10 |
10 #include "base/command_line.h" | 11 #include "base/command_line.h" |
11 #include "base/memory/shared_memory.h" | 12 #include "base/memory/shared_memory.h" |
12 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
13 #include "base/tuple.h" | |
14 #include "content/browser/blob_storage/chrome_blob_storage_context.h" | 14 #include "content/browser/blob_storage/chrome_blob_storage_context.h" |
15 #include "content/common/fileapi/webblob_messages.h" | 15 #include "content/common/fileapi/webblob_messages.h" |
16 #include "content/public/common/content_switches.h" | 16 #include "content/public/common/content_switches.h" |
17 #include "content/public/test/test_browser_context.h" | 17 #include "content/public/test/test_browser_context.h" |
18 #include "content/public/test/test_browser_thread_bundle.h" | 18 #include "content/public/test/test_browser_thread_bundle.h" |
19 #include "ipc/ipc_sender.h" | 19 #include "ipc/ipc_sender.h" |
20 #include "ipc/ipc_test_sink.h" | 20 #include "ipc/ipc_test_sink.h" |
21 #include "ipc/message_filter.h" | 21 #include "ipc/message_filter.h" |
22 #include "storage/browser/blob/blob_data_builder.h" | 22 #include "storage/browser/blob/blob_data_builder.h" |
23 #include "storage/browser/blob/blob_data_handle.h" | 23 #include "storage/browser/blob/blob_data_handle.h" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 void ExpectRequest( | 178 void ExpectRequest( |
179 const std::string& expected_uuid, | 179 const std::string& expected_uuid, |
180 const std::vector<BlobItemBytesRequest>& expected_requests) { | 180 const std::vector<BlobItemBytesRequest>& expected_requests) { |
181 EXPECT_FALSE( | 181 EXPECT_FALSE( |
182 sink_.GetFirstMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID)); | 182 sink_.GetFirstMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID)); |
183 EXPECT_FALSE( | 183 EXPECT_FALSE( |
184 sink_.GetFirstMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID)); | 184 sink_.GetFirstMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID)); |
185 const IPC::Message* message = | 185 const IPC::Message* message = |
186 sink_.GetUniqueMessageMatching(BlobStorageMsg_RequestMemoryItem::ID); | 186 sink_.GetUniqueMessageMatching(BlobStorageMsg_RequestMemoryItem::ID); |
187 ASSERT_TRUE(message); | 187 ASSERT_TRUE(message); |
188 base::Tuple<std::string, std::vector<storage::BlobItemBytesRequest>, | 188 std::tuple<std::string, std::vector<storage::BlobItemBytesRequest>, |
189 std::vector<base::SharedMemoryHandle>, | 189 std::vector<base::SharedMemoryHandle>, |
190 std::vector<IPC::PlatformFileForTransit>> | 190 std::vector<IPC::PlatformFileForTransit>> |
191 args; | 191 args; |
192 BlobStorageMsg_RequestMemoryItem::Read(message, &args); | 192 BlobStorageMsg_RequestMemoryItem::Read(message, &args); |
193 EXPECT_EQ(expected_uuid, base::get<0>(args)); | 193 EXPECT_EQ(expected_uuid, std::get<0>(args)); |
194 std::vector<BlobItemBytesRequest> requests = base::get<1>(args); | 194 std::vector<BlobItemBytesRequest> requests = std::get<1>(args); |
195 ASSERT_EQ(requests.size(), expected_requests.size()); | 195 ASSERT_EQ(requests.size(), expected_requests.size()); |
196 for (size_t i = 0; i < expected_requests.size(); ++i) { | 196 for (size_t i = 0; i < expected_requests.size(); ++i) { |
197 EXPECT_EQ(expected_requests[i], requests[i]); | 197 EXPECT_EQ(expected_requests[i], requests[i]); |
198 } | 198 } |
199 } | 199 } |
200 | 200 |
201 void ExpectRequestWithSharedMemoryHandles( | 201 void ExpectRequestWithSharedMemoryHandles( |
202 const std::string& expected_uuid, | 202 const std::string& expected_uuid, |
203 const std::vector<BlobItemBytesRequest>& expected_requests, | 203 const std::vector<BlobItemBytesRequest>& expected_requests, |
204 std::vector<base::SharedMemoryHandle>* shared_memory_handles) { | 204 std::vector<base::SharedMemoryHandle>* shared_memory_handles) { |
205 EXPECT_FALSE( | 205 EXPECT_FALSE( |
206 sink_.GetFirstMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID)); | 206 sink_.GetFirstMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID)); |
207 EXPECT_FALSE( | 207 EXPECT_FALSE( |
208 sink_.GetFirstMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID)); | 208 sink_.GetFirstMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID)); |
209 const IPC::Message* message = | 209 const IPC::Message* message = |
210 sink_.GetUniqueMessageMatching(BlobStorageMsg_RequestMemoryItem::ID); | 210 sink_.GetUniqueMessageMatching(BlobStorageMsg_RequestMemoryItem::ID); |
211 ASSERT_TRUE(message); | 211 ASSERT_TRUE(message); |
212 base::Tuple<std::string, std::vector<storage::BlobItemBytesRequest>, | 212 std::tuple<std::string, std::vector<storage::BlobItemBytesRequest>, |
213 std::vector<base::SharedMemoryHandle>, | 213 std::vector<base::SharedMemoryHandle>, |
214 std::vector<IPC::PlatformFileForTransit>> | 214 std::vector<IPC::PlatformFileForTransit>> |
215 args; | 215 args; |
216 BlobStorageMsg_RequestMemoryItem::Read(message, &args); | 216 BlobStorageMsg_RequestMemoryItem::Read(message, &args); |
217 EXPECT_EQ(expected_uuid, base::get<0>(args)); | 217 EXPECT_EQ(expected_uuid, std::get<0>(args)); |
218 std::vector<BlobItemBytesRequest> requests = base::get<1>(args); | 218 std::vector<BlobItemBytesRequest> requests = std::get<1>(args); |
219 ASSERT_EQ(requests.size(), expected_requests.size()); | 219 ASSERT_EQ(requests.size(), expected_requests.size()); |
220 for (size_t i = 0; i < expected_requests.size(); ++i) { | 220 for (size_t i = 0; i < expected_requests.size(); ++i) { |
221 EXPECT_EQ(expected_requests[i], requests[i]); | 221 EXPECT_EQ(expected_requests[i], requests[i]); |
222 } | 222 } |
223 *shared_memory_handles = std::move(base::get<2>(args)); | 223 *shared_memory_handles = std::move(std::get<2>(args)); |
224 } | 224 } |
225 | 225 |
226 void ExpectCancel(const std::string& expected_uuid, | 226 void ExpectCancel(const std::string& expected_uuid, |
227 IPCBlobCreationCancelCode code) { | 227 IPCBlobCreationCancelCode code) { |
228 EXPECT_FALSE( | 228 EXPECT_FALSE( |
229 sink_.GetFirstMessageMatching(BlobStorageMsg_RequestMemoryItem::ID)); | 229 sink_.GetFirstMessageMatching(BlobStorageMsg_RequestMemoryItem::ID)); |
230 EXPECT_FALSE( | 230 EXPECT_FALSE( |
231 sink_.GetFirstMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID)); | 231 sink_.GetFirstMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID)); |
232 const IPC::Message* message = | 232 const IPC::Message* message = |
233 sink_.GetUniqueMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID); | 233 sink_.GetUniqueMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID); |
234 ASSERT_TRUE(message); | 234 ASSERT_TRUE(message); |
235 base::Tuple<std::string, IPCBlobCreationCancelCode> args; | 235 std::tuple<std::string, IPCBlobCreationCancelCode> args; |
236 BlobStorageMsg_CancelBuildingBlob::Read(message, &args); | 236 BlobStorageMsg_CancelBuildingBlob::Read(message, &args); |
237 EXPECT_EQ(expected_uuid, base::get<0>(args)); | 237 EXPECT_EQ(expected_uuid, std::get<0>(args)); |
238 EXPECT_EQ(code, base::get<1>(args)); | 238 EXPECT_EQ(code, std::get<1>(args)); |
239 } | 239 } |
240 | 240 |
241 void ExpectDone(const std::string& expected_uuid) { | 241 void ExpectDone(const std::string& expected_uuid) { |
242 EXPECT_FALSE( | 242 EXPECT_FALSE( |
243 sink_.GetFirstMessageMatching(BlobStorageMsg_RequestMemoryItem::ID)); | 243 sink_.GetFirstMessageMatching(BlobStorageMsg_RequestMemoryItem::ID)); |
244 EXPECT_FALSE( | 244 EXPECT_FALSE( |
245 sink_.GetFirstMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID)); | 245 sink_.GetFirstMessageMatching(BlobStorageMsg_CancelBuildingBlob::ID)); |
246 const IPC::Message* message = | 246 const IPC::Message* message = |
247 sink_.GetUniqueMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID); | 247 sink_.GetUniqueMessageMatching(BlobStorageMsg_DoneBuildingBlob::ID); |
248 base::Tuple<std::string> args; | 248 std::tuple<std::string> args; |
249 BlobStorageMsg_DoneBuildingBlob::Read(message, &args); | 249 BlobStorageMsg_DoneBuildingBlob::Read(message, &args); |
250 EXPECT_EQ(expected_uuid, base::get<0>(args)); | 250 EXPECT_EQ(expected_uuid, std::get<0>(args)); |
251 } | 251 } |
252 | 252 |
253 bool IsBeingBuiltInHost(const std::string& uuid) { | 253 bool IsBeingBuiltInHost(const std::string& uuid) { |
254 return host_->async_builder_.IsBeingBuilt(uuid); | 254 return host_->async_builder_.IsBeingBuilt(uuid); |
255 } | 255 } |
256 | 256 |
257 IPC::TestSink sink_; | 257 IPC::TestSink sink_; |
258 TestBrowserThreadBundle browser_thread_bundle_; | 258 TestBrowserThreadBundle browser_thread_bundle_; |
259 TestBrowserContext browser_context_; | 259 TestBrowserContext browser_context_; |
260 ChromeBlobStorageContext* chrome_blob_storage_context_; | 260 ChromeBlobStorageContext* chrome_blob_storage_context_; |
(...skipping 931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1192 EXPECT_EQ(IPCBlobCreationCancelCode::SOURCE_DIED_IN_TRANSIT, | 1192 EXPECT_EQ(IPCBlobCreationCancelCode::SOURCE_DIED_IN_TRANSIT, |
1193 same_host_error_code); | 1193 same_host_error_code); |
1194 EXPECT_FALSE(other_host_built); | 1194 EXPECT_FALSE(other_host_built); |
1195 EXPECT_EQ(IPCBlobCreationCancelCode::SOURCE_DIED_IN_TRANSIT, | 1195 EXPECT_EQ(IPCBlobCreationCancelCode::SOURCE_DIED_IN_TRANSIT, |
1196 other_host_error_code); | 1196 other_host_error_code); |
1197 | 1197 |
1198 sink_.ClearMessages(); | 1198 sink_.ClearMessages(); |
1199 } | 1199 } |
1200 | 1200 |
1201 } // namespace content | 1201 } // namespace content |
OLD | NEW |