| 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 |