| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/loader/upload_data_stream_builder.h" | 5 #include "content/browser/loader/upload_data_stream_builder.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| 11 #include "base/files/file_util.h" | 11 #include "base/files/file_util.h" |
| 12 #include "base/message_loop/message_loop.h" |
| 13 #include "base/message_loop/message_loop_proxy.h" |
| 12 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 13 #include "base/thread_task_runner_handle.h" | |
| 14 #include "base/time/time.h" | 15 #include "base/time/time.h" |
| 15 #include "content/common/resource_request_body.h" | 16 #include "content/common/resource_request_body.h" |
| 16 #include "net/base/io_buffer.h" | 17 #include "net/base/io_buffer.h" |
| 17 #include "net/base/net_errors.h" | 18 #include "net/base/net_errors.h" |
| 18 #include "net/base/test_completion_callback.h" | 19 #include "net/base/test_completion_callback.h" |
| 19 #include "net/base/upload_bytes_element_reader.h" | 20 #include "net/base/upload_bytes_element_reader.h" |
| 20 #include "net/base/upload_data_stream.h" | 21 #include "net/base/upload_data_stream.h" |
| 21 #include "net/base/upload_file_element_reader.h" | 22 #include "net/base/upload_file_element_reader.h" |
| 22 #include "storage/browser/blob/blob_data_builder.h" | 23 #include "storage/browser/blob/blob_data_builder.h" |
| 23 #include "storage/browser/blob/blob_storage_context.h" | 24 #include "storage/browser/blob/blob_storage_context.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 const uint64 kFileLength = 100U; | 71 const uint64 kFileLength = 100U; |
| 71 const base::Time kFileTime = base::Time::FromDoubleT(999); | 72 const base::Time kFileTime = base::Time::FromDoubleT(999); |
| 72 const int64 kIdentifier = 12345; | 73 const int64 kIdentifier = 12345; |
| 73 | 74 |
| 74 request_body->AppendBytes(kData, arraysize(kData) - 1); | 75 request_body->AppendBytes(kData, arraysize(kData) - 1); |
| 75 request_body->AppendFileRange(base::FilePath(kFilePath), | 76 request_body->AppendFileRange(base::FilePath(kFilePath), |
| 76 kFileOffset, kFileLength, kFileTime); | 77 kFileOffset, kFileLength, kFileTime); |
| 77 request_body->set_identifier(kIdentifier); | 78 request_body->set_identifier(kIdentifier); |
| 78 | 79 |
| 79 scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build( | 80 scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build( |
| 80 request_body.get(), NULL, NULL, | 81 request_body.get(), NULL, NULL, base::MessageLoopProxy::current().get())); |
| 81 base::ThreadTaskRunnerHandle::Get().get())); | |
| 82 | 82 |
| 83 EXPECT_EQ(kIdentifier, upload->identifier()); | 83 EXPECT_EQ(kIdentifier, upload->identifier()); |
| 84 ASSERT_TRUE(upload->GetElementReaders()); | 84 ASSERT_TRUE(upload->GetElementReaders()); |
| 85 ASSERT_EQ(request_body->elements()->size(), | 85 ASSERT_EQ(request_body->elements()->size(), |
| 86 upload->GetElementReaders()->size()); | 86 upload->GetElementReaders()->size()); |
| 87 | 87 |
| 88 const net::UploadBytesElementReader* r1 = | 88 const net::UploadBytesElementReader* r1 = |
| 89 (*upload->GetElementReaders())[0]->AsBytesReader(); | 89 (*upload->GetElementReaders())[0]->AsBytesReader(); |
| 90 ASSERT_TRUE(r1); | 90 ASSERT_TRUE(r1); |
| 91 EXPECT_EQ(kData, std::string(r1->bytes(), r1->length())); | 91 EXPECT_EQ(kData, std::string(r1->bytes(), r1->length())); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 scoped_refptr<ResourceRequestBody> request_body(new ResourceRequestBody()); | 139 scoped_refptr<ResourceRequestBody> request_body(new ResourceRequestBody()); |
| 140 request_body->AppendBytes( | 140 request_body->AppendBytes( |
| 141 upload_element1.bytes(), | 141 upload_element1.bytes(), |
| 142 upload_element1.length()); | 142 upload_element1.length()); |
| 143 request_body->AppendFileRange( | 143 request_body->AppendFileRange( |
| 144 upload_element2.path(), | 144 upload_element2.path(), |
| 145 upload_element2.offset(), | 145 upload_element2.offset(), |
| 146 upload_element2.length(), | 146 upload_element2.length(), |
| 147 upload_element2.expected_modification_time()); | 147 upload_element2.expected_modification_time()); |
| 148 | 148 |
| 149 scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build( | 149 scoped_ptr<net::UploadDataStream> upload( |
| 150 request_body.get(), &blob_storage_context, NULL, | 150 UploadDataStreamBuilder::Build( |
| 151 base::ThreadTaskRunnerHandle::Get().get())); | 151 request_body.get(), |
| 152 &blob_storage_context, |
| 153 NULL, |
| 154 base::MessageLoopProxy::current().get())); |
| 152 | 155 |
| 153 ASSERT_TRUE(upload->GetElementReaders()); | 156 ASSERT_TRUE(upload->GetElementReaders()); |
| 154 ASSERT_EQ(2U, upload->GetElementReaders()->size()); | 157 ASSERT_EQ(2U, upload->GetElementReaders()->size()); |
| 155 EXPECT_TRUE(AreElementsEqual( | 158 EXPECT_TRUE(AreElementsEqual( |
| 156 *(*upload->GetElementReaders())[0], upload_element1)); | 159 *(*upload->GetElementReaders())[0], upload_element1)); |
| 157 EXPECT_TRUE(AreElementsEqual( | 160 EXPECT_TRUE(AreElementsEqual( |
| 158 *(*upload->GetElementReaders())[1], upload_element2)); | 161 *(*upload->GetElementReaders())[1], upload_element2)); |
| 159 | 162 |
| 160 // Test having only one blob reference that refers to empty blob data. | 163 // Test having only one blob reference that refers to empty blob data. |
| 161 request_body = new ResourceRequestBody(); | 164 request_body = new ResourceRequestBody(); |
| 162 request_body->AppendBlob(blob_id0); | 165 request_body->AppendBlob(blob_id0); |
| 163 | 166 |
| 164 upload = UploadDataStreamBuilder::Build( | 167 upload = UploadDataStreamBuilder::Build( |
| 165 request_body.get(), &blob_storage_context, NULL, | 168 request_body.get(), |
| 166 base::ThreadTaskRunnerHandle::Get().get()); | 169 &blob_storage_context, |
| 170 NULL, |
| 171 base::MessageLoopProxy::current().get()); |
| 167 ASSERT_TRUE(upload->GetElementReaders()); | 172 ASSERT_TRUE(upload->GetElementReaders()); |
| 168 ASSERT_EQ(0U, upload->GetElementReaders()->size()); | 173 ASSERT_EQ(0U, upload->GetElementReaders()->size()); |
| 169 | 174 |
| 170 // Test having only one blob reference. | 175 // Test having only one blob reference. |
| 171 request_body = new ResourceRequestBody(); | 176 request_body = new ResourceRequestBody(); |
| 172 request_body->AppendBlob(blob_id1); | 177 request_body->AppendBlob(blob_id1); |
| 173 | 178 |
| 174 upload = UploadDataStreamBuilder::Build( | 179 upload = UploadDataStreamBuilder::Build( |
| 175 request_body.get(), &blob_storage_context, NULL, | 180 request_body.get(), |
| 176 base::ThreadTaskRunnerHandle::Get().get()); | 181 &blob_storage_context, |
| 182 NULL, |
| 183 base::MessageLoopProxy::current().get()); |
| 177 ASSERT_TRUE(upload->GetElementReaders()); | 184 ASSERT_TRUE(upload->GetElementReaders()); |
| 178 ASSERT_EQ(2U, upload->GetElementReaders()->size()); | 185 ASSERT_EQ(2U, upload->GetElementReaders()->size()); |
| 179 EXPECT_TRUE(AreElementsEqual( | 186 EXPECT_TRUE(AreElementsEqual( |
| 180 *(*upload->GetElementReaders())[0], blob_element1)); | 187 *(*upload->GetElementReaders())[0], blob_element1)); |
| 181 EXPECT_TRUE(AreElementsEqual( | 188 EXPECT_TRUE(AreElementsEqual( |
| 182 *(*upload->GetElementReaders())[1], blob_element2)); | 189 *(*upload->GetElementReaders())[1], blob_element2)); |
| 183 | 190 |
| 184 // Test having one blob reference at the beginning. | 191 // Test having one blob reference at the beginning. |
| 185 request_body = new ResourceRequestBody(); | 192 request_body = new ResourceRequestBody(); |
| 186 request_body->AppendBlob(blob_id1); | 193 request_body->AppendBlob(blob_id1); |
| 187 request_body->AppendBytes( | 194 request_body->AppendBytes( |
| 188 upload_element1.bytes(), | 195 upload_element1.bytes(), |
| 189 upload_element1.length()); | 196 upload_element1.length()); |
| 190 request_body->AppendFileRange( | 197 request_body->AppendFileRange( |
| 191 upload_element2.path(), | 198 upload_element2.path(), |
| 192 upload_element2.offset(), | 199 upload_element2.offset(), |
| 193 upload_element2.length(), | 200 upload_element2.length(), |
| 194 upload_element2.expected_modification_time()); | 201 upload_element2.expected_modification_time()); |
| 195 | 202 |
| 196 upload = UploadDataStreamBuilder::Build( | 203 upload = UploadDataStreamBuilder::Build( |
| 197 request_body.get(), &blob_storage_context, NULL, | 204 request_body.get(), |
| 198 base::ThreadTaskRunnerHandle::Get().get()); | 205 &blob_storage_context, |
| 206 NULL, |
| 207 base::MessageLoopProxy::current().get()); |
| 199 ASSERT_TRUE(upload->GetElementReaders()); | 208 ASSERT_TRUE(upload->GetElementReaders()); |
| 200 ASSERT_EQ(4U, upload->GetElementReaders()->size()); | 209 ASSERT_EQ(4U, upload->GetElementReaders()->size()); |
| 201 EXPECT_TRUE(AreElementsEqual( | 210 EXPECT_TRUE(AreElementsEqual( |
| 202 *(*upload->GetElementReaders())[0], blob_element1)); | 211 *(*upload->GetElementReaders())[0], blob_element1)); |
| 203 EXPECT_TRUE(AreElementsEqual( | 212 EXPECT_TRUE(AreElementsEqual( |
| 204 *(*upload->GetElementReaders())[1], blob_element2)); | 213 *(*upload->GetElementReaders())[1], blob_element2)); |
| 205 EXPECT_TRUE(AreElementsEqual( | 214 EXPECT_TRUE(AreElementsEqual( |
| 206 *(*upload->GetElementReaders())[2], upload_element1)); | 215 *(*upload->GetElementReaders())[2], upload_element1)); |
| 207 EXPECT_TRUE(AreElementsEqual( | 216 EXPECT_TRUE(AreElementsEqual( |
| 208 *(*upload->GetElementReaders())[3], upload_element2)); | 217 *(*upload->GetElementReaders())[3], upload_element2)); |
| 209 | 218 |
| 210 // Test having one blob reference at the end. | 219 // Test having one blob reference at the end. |
| 211 request_body = new ResourceRequestBody(); | 220 request_body = new ResourceRequestBody(); |
| 212 request_body->AppendBytes( | 221 request_body->AppendBytes( |
| 213 upload_element1.bytes(), | 222 upload_element1.bytes(), |
| 214 upload_element1.length()); | 223 upload_element1.length()); |
| 215 request_body->AppendFileRange( | 224 request_body->AppendFileRange( |
| 216 upload_element2.path(), | 225 upload_element2.path(), |
| 217 upload_element2.offset(), | 226 upload_element2.offset(), |
| 218 upload_element2.length(), | 227 upload_element2.length(), |
| 219 upload_element2.expected_modification_time()); | 228 upload_element2.expected_modification_time()); |
| 220 request_body->AppendBlob(blob_id1); | 229 request_body->AppendBlob(blob_id1); |
| 221 | 230 |
| 222 upload = UploadDataStreamBuilder::Build( | 231 upload = |
| 223 request_body.get(), &blob_storage_context, NULL, | 232 UploadDataStreamBuilder::Build(request_body.get(), |
| 224 base::ThreadTaskRunnerHandle::Get().get()); | 233 &blob_storage_context, |
| 234 NULL, |
| 235 base::MessageLoopProxy::current().get()); |
| 225 ASSERT_TRUE(upload->GetElementReaders()); | 236 ASSERT_TRUE(upload->GetElementReaders()); |
| 226 ASSERT_EQ(4U, upload->GetElementReaders()->size()); | 237 ASSERT_EQ(4U, upload->GetElementReaders()->size()); |
| 227 EXPECT_TRUE(AreElementsEqual( | 238 EXPECT_TRUE(AreElementsEqual( |
| 228 *(*upload->GetElementReaders())[0], upload_element1)); | 239 *(*upload->GetElementReaders())[0], upload_element1)); |
| 229 EXPECT_TRUE(AreElementsEqual( | 240 EXPECT_TRUE(AreElementsEqual( |
| 230 *(*upload->GetElementReaders())[1], upload_element2)); | 241 *(*upload->GetElementReaders())[1], upload_element2)); |
| 231 EXPECT_TRUE(AreElementsEqual( | 242 EXPECT_TRUE(AreElementsEqual( |
| 232 *(*upload->GetElementReaders())[2], blob_element1)); | 243 *(*upload->GetElementReaders())[2], blob_element1)); |
| 233 EXPECT_TRUE(AreElementsEqual( | 244 EXPECT_TRUE(AreElementsEqual( |
| 234 *(*upload->GetElementReaders())[3], blob_element2)); | 245 *(*upload->GetElementReaders())[3], blob_element2)); |
| 235 | 246 |
| 236 // Test having one blob reference in the middle. | 247 // Test having one blob reference in the middle. |
| 237 request_body = new ResourceRequestBody(); | 248 request_body = new ResourceRequestBody(); |
| 238 request_body->AppendBytes( | 249 request_body->AppendBytes( |
| 239 upload_element1.bytes(), | 250 upload_element1.bytes(), |
| 240 upload_element1.length()); | 251 upload_element1.length()); |
| 241 request_body->AppendBlob(blob_id1); | 252 request_body->AppendBlob(blob_id1); |
| 242 request_body->AppendFileRange( | 253 request_body->AppendFileRange( |
| 243 upload_element2.path(), | 254 upload_element2.path(), |
| 244 upload_element2.offset(), | 255 upload_element2.offset(), |
| 245 upload_element2.length(), | 256 upload_element2.length(), |
| 246 upload_element2.expected_modification_time()); | 257 upload_element2.expected_modification_time()); |
| 247 | 258 |
| 248 upload = UploadDataStreamBuilder::Build( | 259 upload = UploadDataStreamBuilder::Build( |
| 249 request_body.get(), &blob_storage_context, NULL, | 260 request_body.get(), |
| 250 base::ThreadTaskRunnerHandle::Get().get()); | 261 &blob_storage_context, |
| 262 NULL, |
| 263 base::MessageLoopProxy::current().get()); |
| 251 ASSERT_TRUE(upload->GetElementReaders()); | 264 ASSERT_TRUE(upload->GetElementReaders()); |
| 252 ASSERT_EQ(4U, upload->GetElementReaders()->size()); | 265 ASSERT_EQ(4U, upload->GetElementReaders()->size()); |
| 253 EXPECT_TRUE(AreElementsEqual( | 266 EXPECT_TRUE(AreElementsEqual( |
| 254 *(*upload->GetElementReaders())[0], upload_element1)); | 267 *(*upload->GetElementReaders())[0], upload_element1)); |
| 255 EXPECT_TRUE(AreElementsEqual( | 268 EXPECT_TRUE(AreElementsEqual( |
| 256 *(*upload->GetElementReaders())[1], blob_element1)); | 269 *(*upload->GetElementReaders())[1], blob_element1)); |
| 257 EXPECT_TRUE(AreElementsEqual( | 270 EXPECT_TRUE(AreElementsEqual( |
| 258 *(*upload->GetElementReaders())[2], blob_element2)); | 271 *(*upload->GetElementReaders())[2], blob_element2)); |
| 259 EXPECT_TRUE(AreElementsEqual( | 272 EXPECT_TRUE(AreElementsEqual( |
| 260 *(*upload->GetElementReaders())[3], upload_element2)); | 273 *(*upload->GetElementReaders())[3], upload_element2)); |
| 261 | 274 |
| 262 // Test having multiple blob references. | 275 // Test having multiple blob references. |
| 263 request_body = new ResourceRequestBody(); | 276 request_body = new ResourceRequestBody(); |
| 264 request_body->AppendBlob(blob_id1); | 277 request_body->AppendBlob(blob_id1); |
| 265 request_body->AppendBytes( | 278 request_body->AppendBytes( |
| 266 upload_element1.bytes(), | 279 upload_element1.bytes(), |
| 267 upload_element1.length()); | 280 upload_element1.length()); |
| 268 request_body->AppendBlob(blob_id1); | 281 request_body->AppendBlob(blob_id1); |
| 269 request_body->AppendBlob(blob_id1); | 282 request_body->AppendBlob(blob_id1); |
| 270 request_body->AppendFileRange( | 283 request_body->AppendFileRange( |
| 271 upload_element2.path(), | 284 upload_element2.path(), |
| 272 upload_element2.offset(), | 285 upload_element2.offset(), |
| 273 upload_element2.length(), | 286 upload_element2.length(), |
| 274 upload_element2.expected_modification_time()); | 287 upload_element2.expected_modification_time()); |
| 275 | 288 |
| 276 upload = UploadDataStreamBuilder::Build( | 289 upload = UploadDataStreamBuilder::Build( |
| 277 request_body.get(), &blob_storage_context, NULL, | 290 request_body.get(), |
| 278 base::ThreadTaskRunnerHandle::Get().get()); | 291 &blob_storage_context, |
| 292 NULL, |
| 293 base::MessageLoopProxy::current().get()); |
| 279 ASSERT_TRUE(upload->GetElementReaders()); | 294 ASSERT_TRUE(upload->GetElementReaders()); |
| 280 ASSERT_EQ(8U, upload->GetElementReaders()->size()); | 295 ASSERT_EQ(8U, upload->GetElementReaders()->size()); |
| 281 EXPECT_TRUE(AreElementsEqual( | 296 EXPECT_TRUE(AreElementsEqual( |
| 282 *(*upload->GetElementReaders())[0], blob_element1)); | 297 *(*upload->GetElementReaders())[0], blob_element1)); |
| 283 EXPECT_TRUE(AreElementsEqual( | 298 EXPECT_TRUE(AreElementsEqual( |
| 284 *(*upload->GetElementReaders())[1], blob_element2)); | 299 *(*upload->GetElementReaders())[1], blob_element2)); |
| 285 EXPECT_TRUE(AreElementsEqual( | 300 EXPECT_TRUE(AreElementsEqual( |
| 286 *(*upload->GetElementReaders())[2], upload_element1)); | 301 *(*upload->GetElementReaders())[2], upload_element1)); |
| 287 EXPECT_TRUE(AreElementsEqual( | 302 EXPECT_TRUE(AreElementsEqual( |
| 288 *(*upload->GetElementReaders())[3], blob_element1)); | 303 *(*upload->GetElementReaders())[3], blob_element1)); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 319 blob_data_builder->AppendFile(test_blob_path, 0, kZeroLength, blob_time); | 334 blob_data_builder->AppendFile(test_blob_path, 0, kZeroLength, blob_time); |
| 320 scoped_ptr<BlobDataHandle> handle = | 335 scoped_ptr<BlobDataHandle> handle = |
| 321 blob_storage_context.AddFinishedBlob(blob_data_builder.get()); | 336 blob_storage_context.AddFinishedBlob(blob_data_builder.get()); |
| 322 | 337 |
| 323 ResourceRequestBody::Element blob_element; | 338 ResourceRequestBody::Element blob_element; |
| 324 blob_element.SetToFilePathRange(test_blob_path, 0, kZeroLength, blob_time); | 339 blob_element.SetToFilePathRange(test_blob_path, 0, kZeroLength, blob_time); |
| 325 | 340 |
| 326 scoped_refptr<ResourceRequestBody> request_body(new ResourceRequestBody()); | 341 scoped_refptr<ResourceRequestBody> request_body(new ResourceRequestBody()); |
| 327 scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build( | 342 scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build( |
| 328 request_body.get(), &blob_storage_context, NULL, | 343 request_body.get(), &blob_storage_context, NULL, |
| 329 base::ThreadTaskRunnerHandle::Get().get())); | 344 base::MessageLoopProxy::current().get())); |
| 330 | 345 |
| 331 request_body = new ResourceRequestBody(); | 346 request_body = new ResourceRequestBody(); |
| 332 request_body->AppendBlob(blob_id); | 347 request_body->AppendBlob(blob_id); |
| 333 request_body->AppendBlob(blob_id); | 348 request_body->AppendBlob(blob_id); |
| 334 request_body->AppendBlob(blob_id); | 349 request_body->AppendBlob(blob_id); |
| 335 | 350 |
| 336 upload = UploadDataStreamBuilder::Build( | 351 upload = UploadDataStreamBuilder::Build( |
| 337 request_body.get(), &blob_storage_context, NULL, | 352 request_body.get(), &blob_storage_context, NULL, |
| 338 base::ThreadTaskRunnerHandle::Get().get()); | 353 base::MessageLoopProxy::current().get()); |
| 339 ASSERT_TRUE(upload->GetElementReaders()); | 354 ASSERT_TRUE(upload->GetElementReaders()); |
| 340 const auto& readers = *upload->GetElementReaders(); | 355 const auto& readers = *upload->GetElementReaders(); |
| 341 ASSERT_EQ(3U, readers.size()); | 356 ASSERT_EQ(3U, readers.size()); |
| 342 EXPECT_TRUE(AreElementsEqual(*readers[0], blob_element)); | 357 EXPECT_TRUE(AreElementsEqual(*readers[0], blob_element)); |
| 343 EXPECT_TRUE(AreElementsEqual(*readers[1], blob_element)); | 358 EXPECT_TRUE(AreElementsEqual(*readers[1], blob_element)); |
| 344 EXPECT_TRUE(AreElementsEqual(*readers[2], blob_element)); | 359 EXPECT_TRUE(AreElementsEqual(*readers[2], blob_element)); |
| 345 | 360 |
| 346 net::TestCompletionCallback init_callback; | 361 net::TestCompletionCallback init_callback; |
| 347 ASSERT_EQ(net::ERR_IO_PENDING, upload->Init(init_callback.callback())); | 362 ASSERT_EQ(net::ERR_IO_PENDING, upload->Init(init_callback.callback())); |
| 348 EXPECT_EQ(net::OK, init_callback.WaitForResult()); | 363 EXPECT_EQ(net::OK, init_callback.WaitForResult()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 359 int result = | 374 int result = |
| 360 upload->Read(io_buffer.get(), kBufferLength, read_callback.callback()); | 375 upload->Read(io_buffer.get(), kBufferLength, read_callback.callback()); |
| 361 EXPECT_EQ(static_cast<int>(kZeroLength), read_callback.GetResult(result)); | 376 EXPECT_EQ(static_cast<int>(kZeroLength), read_callback.GetResult(result)); |
| 362 | 377 |
| 363 base::DeleteFile(test_blob_path, false); | 378 base::DeleteFile(test_blob_path, false); |
| 364 } | 379 } |
| 365 // Clean up for ASAN. | 380 // Clean up for ASAN. |
| 366 base::RunLoop().RunUntilIdle(); | 381 base::RunLoop().RunUntilIdle(); |
| 367 } | 382 } |
| 368 } // namespace content | 383 } // namespace content |
| OLD | NEW |