OLD | NEW |
1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2010 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/platform_thread.h" | 6 #include "base/platform_thread.h" |
7 #include "base/timer.h" | 7 #include "base/timer.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "net/base/io_buffer.h" | 9 #include "net/base/io_buffer.h" |
10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
(...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1019 const int kSize = 16 * 1024; | 1019 const int kSize = 16 * 1024; |
1020 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); | 1020 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); |
1021 CacheTestFillBuffer(buf->data(), kSize, false); | 1021 CacheTestFillBuffer(buf->data(), kSize, false); |
1022 | 1022 |
1023 // Write at offset 0x20F0000 (33 MB - 64 KB), and 0x20F4400 (33 MB - 47 KB). | 1023 // Write at offset 0x20F0000 (33 MB - 64 KB), and 0x20F4400 (33 MB - 47 KB). |
1024 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F0000, buf, kSize, NULL)); | 1024 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F0000, buf, kSize, NULL)); |
1025 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F4400, buf, kSize, NULL)); | 1025 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F4400, buf, kSize, NULL)); |
1026 | 1026 |
1027 // We stop at the first empty block. | 1027 // We stop at the first empty block. |
1028 int64 start; | 1028 int64 start; |
1029 EXPECT_EQ(kSize, entry->GetAvailableRange(0x20F0000, kSize * 2, &start)); | 1029 TestCompletionCallback cb; |
| 1030 int rv = entry->GetAvailableRange(0x20F0000, kSize * 2, &start, &cb); |
| 1031 EXPECT_EQ(kSize, cb.GetResult(rv)); |
1030 EXPECT_EQ(0x20F0000, start); | 1032 EXPECT_EQ(0x20F0000, start); |
1031 | 1033 |
1032 start = 0; | 1034 start = 0; |
1033 EXPECT_EQ(0, entry->GetAvailableRange(0, kSize, &start)); | 1035 rv = entry->GetAvailableRange(0, kSize, &start, &cb); |
1034 EXPECT_EQ(0, entry->GetAvailableRange(0x20F0000 - kSize, kSize, &start)); | 1036 EXPECT_EQ(0, cb.GetResult(rv)); |
1035 EXPECT_EQ(kSize, entry->GetAvailableRange(0, 0x2100000, &start)); | 1037 rv = entry->GetAvailableRange(0x20F0000 - kSize, kSize, &start, &cb); |
| 1038 EXPECT_EQ(0, cb.GetResult(rv)); |
| 1039 rv = entry->GetAvailableRange(0, 0x2100000, &start, &cb); |
| 1040 EXPECT_EQ(kSize, cb.GetResult(rv)); |
1036 EXPECT_EQ(0x20F0000, start); | 1041 EXPECT_EQ(0x20F0000, start); |
1037 | 1042 |
1038 // We should be able to Read based on the results of GetAvailableRange. | 1043 // We should be able to Read based on the results of GetAvailableRange. |
1039 start = -1; | 1044 start = -1; |
1040 EXPECT_EQ(0, entry->GetAvailableRange(0x2100000, kSize, &start)); | 1045 rv = entry->GetAvailableRange(0x2100000, kSize, &start, &cb); |
1041 EXPECT_EQ(0, entry->ReadSparseData(start, buf, kSize, NULL)); | 1046 EXPECT_EQ(0, cb.GetResult(rv)); |
| 1047 rv = entry->ReadSparseData(start, buf, kSize, &cb); |
| 1048 EXPECT_EQ(0, cb.GetResult(rv)); |
1042 | 1049 |
1043 start = 0; | 1050 start = 0; |
1044 EXPECT_EQ(0x2000, entry->GetAvailableRange(0x20F2000, kSize, &start)); | 1051 rv = entry->GetAvailableRange(0x20F2000, kSize, &start, &cb); |
| 1052 EXPECT_EQ(0x2000, cb.GetResult(rv)); |
1045 EXPECT_EQ(0x20F2000, start); | 1053 EXPECT_EQ(0x20F2000, start); |
1046 EXPECT_EQ(0x2000, entry->ReadSparseData(start, buf, kSize, NULL)); | 1054 EXPECT_EQ(0x2000, entry->ReadSparseData(start, buf, kSize, NULL)); |
1047 | 1055 |
1048 // Make sure that we respect the |len| argument. | 1056 // Make sure that we respect the |len| argument. |
1049 start = 0; | 1057 start = 0; |
1050 EXPECT_EQ(1, entry->GetAvailableRange(0x20F0001 - kSize, kSize, &start)); | 1058 rv = entry->GetAvailableRange(0x20F0001 - kSize, kSize, &start, &cb); |
| 1059 EXPECT_EQ(1, cb.GetResult(rv)); |
1051 EXPECT_EQ(0x20F0000, start); | 1060 EXPECT_EQ(0x20F0000, start); |
1052 | 1061 |
1053 entry->Close(); | 1062 entry->Close(); |
1054 } | 1063 } |
1055 | 1064 |
1056 TEST_F(DiskCacheEntryTest, GetAvailableRange) { | 1065 TEST_F(DiskCacheEntryTest, GetAvailableRange) { |
1057 InitCache(); | 1066 InitCache(); |
1058 GetAvailableRange(); | 1067 GetAvailableRange(); |
1059 } | 1068 } |
1060 | 1069 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1156 | 1165 |
1157 // Writes in the middle of an entry. | 1166 // Writes in the middle of an entry. |
1158 EXPECT_EQ(1024, entry->WriteSparseData(0, buf, 1024, NULL)); | 1167 EXPECT_EQ(1024, entry->WriteSparseData(0, buf, 1024, NULL)); |
1159 EXPECT_EQ(1024, entry->WriteSparseData(5120, buf, 1024, NULL)); | 1168 EXPECT_EQ(1024, entry->WriteSparseData(5120, buf, 1024, NULL)); |
1160 EXPECT_EQ(1024, entry->WriteSparseData(10000, buf, 1024, NULL)); | 1169 EXPECT_EQ(1024, entry->WriteSparseData(10000, buf, 1024, NULL)); |
1161 | 1170 |
1162 // Writes in the middle of an entry and spans 2 child entries. | 1171 // Writes in the middle of an entry and spans 2 child entries. |
1163 EXPECT_EQ(8192, entry->WriteSparseData(50000, buf, 8192, NULL)); | 1172 EXPECT_EQ(8192, entry->WriteSparseData(50000, buf, 8192, NULL)); |
1164 | 1173 |
1165 int64 start; | 1174 int64 start; |
| 1175 TestCompletionCallback cb; |
1166 // Test that we stop at a discontinuous child at the second block. | 1176 // Test that we stop at a discontinuous child at the second block. |
1167 EXPECT_EQ(1024, entry->GetAvailableRange(0, 10000, &start)); | 1177 int rv = entry->GetAvailableRange(0, 10000, &start, &cb); |
| 1178 EXPECT_EQ(1024, cb.GetResult(rv)); |
1168 EXPECT_EQ(0, start); | 1179 EXPECT_EQ(0, start); |
1169 | 1180 |
1170 // Test that number of bytes is reported correctly when we start from the | 1181 // Test that number of bytes is reported correctly when we start from the |
1171 // middle of a filled region. | 1182 // middle of a filled region. |
1172 EXPECT_EQ(512, entry->GetAvailableRange(512, 10000, &start)); | 1183 rv = entry->GetAvailableRange(512, 10000, &start, &cb); |
| 1184 EXPECT_EQ(512, cb.GetResult(rv)); |
1173 EXPECT_EQ(512, start); | 1185 EXPECT_EQ(512, start); |
1174 | 1186 |
1175 // Test that we found bytes in the child of next block. | 1187 // Test that we found bytes in the child of next block. |
1176 EXPECT_EQ(1024, entry->GetAvailableRange(1024, 10000, &start)); | 1188 rv = entry->GetAvailableRange(1024, 10000, &start, &cb); |
| 1189 EXPECT_EQ(1024, cb.GetResult(rv)); |
1177 EXPECT_EQ(5120, start); | 1190 EXPECT_EQ(5120, start); |
1178 | 1191 |
1179 // Test that the desired length is respected. It starts within a filled | 1192 // Test that the desired length is respected. It starts within a filled |
1180 // region. | 1193 // region. |
1181 EXPECT_EQ(512, entry->GetAvailableRange(5500, 512, &start)); | 1194 rv = entry->GetAvailableRange(5500, 512, &start, &cb); |
| 1195 EXPECT_EQ(512, cb.GetResult(rv)); |
1182 EXPECT_EQ(5500, start); | 1196 EXPECT_EQ(5500, start); |
1183 | 1197 |
1184 // Test that the desired length is respected. It starts before a filled | 1198 // Test that the desired length is respected. It starts before a filled |
1185 // region. | 1199 // region. |
1186 EXPECT_EQ(500, entry->GetAvailableRange(5000, 620, &start)); | 1200 rv = entry->GetAvailableRange(5000, 620, &start, &cb); |
| 1201 EXPECT_EQ(500, cb.GetResult(rv)); |
1187 EXPECT_EQ(5120, start); | 1202 EXPECT_EQ(5120, start); |
1188 | 1203 |
1189 // Test that multiple blocks are scanned. | 1204 // Test that multiple blocks are scanned. |
1190 EXPECT_EQ(8192, entry->GetAvailableRange(40000, 20000, &start)); | 1205 rv = entry->GetAvailableRange(40000, 20000, &start, &cb); |
| 1206 EXPECT_EQ(8192, cb.GetResult(rv)); |
1191 EXPECT_EQ(50000, start); | 1207 EXPECT_EQ(50000, start); |
1192 | 1208 |
1193 entry->Close(); | 1209 entry->Close(); |
1194 } | 1210 } |
1195 | 1211 |
1196 void DiskCacheEntryTest::DoomSparseEntry() { | 1212 void DiskCacheEntryTest::DoomSparseEntry() { |
1197 std::string key1("the first key"); | 1213 std::string key1("the first key"); |
1198 std::string key2("the second key"); | 1214 std::string key2("the second key"); |
1199 disk_cache::Entry *entry1, *entry2; | 1215 disk_cache::Entry *entry1, *entry2; |
1200 ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); | 1216 ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1285 | 1301 |
1286 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL)); | 1302 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL)); |
1287 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500)); | 1303 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500)); |
1288 EXPECT_EQ(0, entry->ReadSparseData(0, buf2, kSize, NULL)); | 1304 EXPECT_EQ(0, entry->ReadSparseData(0, buf2, kSize, NULL)); |
1289 | 1305 |
1290 // This read should not change anything. | 1306 // This read should not change anything. |
1291 EXPECT_EQ(96, entry->ReadSparseData(24000, buf2, kSize, NULL)); | 1307 EXPECT_EQ(96, entry->ReadSparseData(24000, buf2, kSize, NULL)); |
1292 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL)); | 1308 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL)); |
1293 EXPECT_EQ(0, entry->ReadSparseData(499, buf2, kSize, NULL)); | 1309 EXPECT_EQ(0, entry->ReadSparseData(499, buf2, kSize, NULL)); |
1294 | 1310 |
| 1311 int rv; |
1295 int64 start; | 1312 int64 start; |
| 1313 TestCompletionCallback cb; |
1296 if (memory_only_) { | 1314 if (memory_only_) { |
1297 EXPECT_EQ(100, entry->GetAvailableRange(0, 600, &start)); | 1315 rv = entry->GetAvailableRange(0, 600, &start, &cb); |
| 1316 EXPECT_EQ(100, cb.GetResult(rv)); |
1298 EXPECT_EQ(500, start); | 1317 EXPECT_EQ(500, start); |
1299 } else { | 1318 } else { |
1300 EXPECT_EQ(1024, entry->GetAvailableRange(0, 2048, &start)); | 1319 rv = entry->GetAvailableRange(0, 2048, &start, &cb); |
| 1320 EXPECT_EQ(1024, cb.GetResult(rv)); |
1301 EXPECT_EQ(1024, start); | 1321 EXPECT_EQ(1024, start); |
1302 } | 1322 } |
1303 EXPECT_EQ(500, entry->GetAvailableRange(kSize, kSize, &start)); | 1323 rv = entry->GetAvailableRange(kSize, kSize, &start, &cb); |
| 1324 EXPECT_EQ(500, cb.GetResult(rv)); |
1304 EXPECT_EQ(kSize, start); | 1325 EXPECT_EQ(kSize, start); |
1305 EXPECT_EQ(3616, entry->GetAvailableRange(20 * 1024, 10000, &start)); | 1326 rv = entry->GetAvailableRange(20 * 1024, 10000, &start, &cb); |
| 1327 EXPECT_EQ(3616, cb.GetResult(rv)); |
1306 EXPECT_EQ(20 * 1024, start); | 1328 EXPECT_EQ(20 * 1024, start); |
1307 | 1329 |
1308 // 1. Query before a filled 1KB block. | 1330 // 1. Query before a filled 1KB block. |
1309 // 2. Query within a filled 1KB block. | 1331 // 2. Query within a filled 1KB block. |
1310 // 3. Query beyond a filled 1KB block. | 1332 // 3. Query beyond a filled 1KB block. |
1311 if (memory_only_) { | 1333 if (memory_only_) { |
1312 EXPECT_EQ(3496, entry->GetAvailableRange(19400, kSize, &start)); | 1334 rv = entry->GetAvailableRange(19400, kSize, &start, &cb); |
| 1335 EXPECT_EQ(3496, cb.GetResult(rv)); |
1313 EXPECT_EQ(20000, start); | 1336 EXPECT_EQ(20000, start); |
1314 } else { | 1337 } else { |
1315 EXPECT_EQ(3016, entry->GetAvailableRange(19400, kSize, &start)); | 1338 rv = entry->GetAvailableRange(19400, kSize, &start, &cb); |
| 1339 EXPECT_EQ(3016, cb.GetResult(rv)); |
1316 EXPECT_EQ(20480, start); | 1340 EXPECT_EQ(20480, start); |
1317 } | 1341 } |
1318 EXPECT_EQ(1523, entry->GetAvailableRange(3073, kSize, &start)); | 1342 rv = entry->GetAvailableRange(3073, kSize, &start, &cb); |
| 1343 EXPECT_EQ(1523, cb.GetResult(rv)); |
1319 EXPECT_EQ(3073, start); | 1344 EXPECT_EQ(3073, start); |
1320 EXPECT_EQ(0, entry->GetAvailableRange(4600, kSize, &start)); | 1345 rv = entry->GetAvailableRange(4600, kSize, &start, &cb); |
| 1346 EXPECT_EQ(0, cb.GetResult(rv)); |
1321 EXPECT_EQ(4600, start); | 1347 EXPECT_EQ(4600, start); |
1322 | 1348 |
1323 // Now make another write and verify that there is no hole in between. | 1349 // Now make another write and verify that there is no hole in between. |
1324 EXPECT_EQ(kSize, entry->WriteSparseData(500 + kSize, buf1, kSize, NULL)); | 1350 EXPECT_EQ(kSize, entry->WriteSparseData(500 + kSize, buf1, kSize, NULL)); |
1325 EXPECT_EQ(7 * 1024 + 500, entry->GetAvailableRange(1024, 10000, &start)); | 1351 rv = entry->GetAvailableRange(1024, 10000, &start, &cb); |
| 1352 EXPECT_EQ(7 * 1024 + 500, cb.GetResult(rv)); |
1326 EXPECT_EQ(1024, start); | 1353 EXPECT_EQ(1024, start); |
1327 EXPECT_EQ(kSize, entry->ReadSparseData(kSize, buf2, kSize, NULL)); | 1354 EXPECT_EQ(kSize, entry->ReadSparseData(kSize, buf2, kSize, NULL)); |
1328 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500)); | 1355 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500)); |
1329 EXPECT_EQ(0, memcmp(buf2->data() + 500, buf1->data(), kSize - 500)); | 1356 EXPECT_EQ(0, memcmp(buf2->data() + 500, buf1->data(), kSize - 500)); |
1330 | 1357 |
1331 entry->Close(); | 1358 entry->Close(); |
1332 } | 1359 } |
1333 | 1360 |
1334 TEST_F(DiskCacheEntryTest, PartialSparseEntry) { | 1361 TEST_F(DiskCacheEntryTest, PartialSparseEntry) { |
1335 InitCache(); | 1362 InitCache(); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1396 TEST_F(DiskCacheEntryTest, CancelSparseIO) { | 1423 TEST_F(DiskCacheEntryTest, CancelSparseIO) { |
1397 InitCache(); | 1424 InitCache(); |
1398 std::string key("the first key"); | 1425 std::string key("the first key"); |
1399 disk_cache::Entry* entry; | 1426 disk_cache::Entry* entry; |
1400 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 1427 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
1401 | 1428 |
1402 const int kSize = 40 * 1024; | 1429 const int kSize = 40 * 1024; |
1403 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); | 1430 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); |
1404 CacheTestFillBuffer(buf->data(), kSize, false); | 1431 CacheTestFillBuffer(buf->data(), kSize, false); |
1405 | 1432 |
1406 TestCompletionCallback cb1, cb2, cb3, cb4; | 1433 TestCompletionCallback cb1, cb2, cb3, cb4, cb5; |
1407 int64 offset = 0; | 1434 int64 offset = 0; |
1408 int tries = 0; | 1435 int tries = 0; |
1409 const int maxtries = 100; // Avoid hang on infinitely fast disks. | 1436 const int maxtries = 100; // Avoid hang on infinitely fast disks. |
1410 for (int ret = 0; ret != net::ERR_IO_PENDING; offset += kSize * 4) { | 1437 for (int ret = 0; ret != net::ERR_IO_PENDING; offset += kSize * 4) { |
1411 ret = entry->WriteSparseData(offset, buf, kSize, &cb1); | 1438 ret = entry->WriteSparseData(offset, buf, kSize, &cb1); |
1412 if (++tries > maxtries) { | 1439 if (++tries > maxtries) { |
1413 LOG(ERROR) << "Data writes never come back PENDING; skipping test"; | 1440 LOG(ERROR) << "Data writes never come back PENDING; skipping test"; |
1414 entry->Close(); | 1441 entry->Close(); |
1415 return; | 1442 return; |
1416 } | 1443 } |
1417 } | 1444 } |
1418 | 1445 |
1419 // Cannot use the entry at this point. | 1446 // Cannot use the entry at this point. |
1420 offset = 0; | 1447 offset = 0; |
1421 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, | 1448 int rv = entry->GetAvailableRange(offset, kSize, &offset, &cb5); |
1422 entry->GetAvailableRange(offset, kSize, &offset)); | 1449 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, cb5.GetResult(rv)); |
1423 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2)); | 1450 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2)); |
1424 | 1451 |
1425 // We cancel the pending operation, and register multiple notifications. | 1452 // We cancel the pending operation, and register multiple notifications. |
1426 entry->CancelSparseIO(); | 1453 entry->CancelSparseIO(); |
1427 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb2)); | 1454 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb2)); |
1428 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb3)); | 1455 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb3)); |
1429 entry->CancelSparseIO(); // Should be a no op at this point. | 1456 entry->CancelSparseIO(); // Should be a no op at this point. |
1430 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb4)); | 1457 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb4)); |
1431 | 1458 |
1432 offset = 0; | 1459 offset = 0; |
1433 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, | 1460 rv = entry->GetAvailableRange(offset, kSize, &offset, &cb5); |
1434 entry->GetAvailableRange(offset, kSize, &offset)); | 1461 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, cb5.GetResult(rv)); |
1435 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, | 1462 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, |
1436 entry->ReadSparseData(offset, buf, kSize, NULL)); | 1463 entry->ReadSparseData(offset, buf, kSize, NULL)); |
1437 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, | 1464 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, |
1438 entry->WriteSparseData(offset, buf, kSize, NULL)); | 1465 entry->WriteSparseData(offset, buf, kSize, NULL)); |
1439 | 1466 |
1440 // Now see if we receive all notifications. | 1467 // Now see if we receive all notifications. |
1441 EXPECT_EQ(kSize, cb1.GetResult(net::ERR_IO_PENDING)); | 1468 EXPECT_EQ(kSize, cb1.GetResult(net::ERR_IO_PENDING)); |
1442 EXPECT_EQ(net::OK, cb2.GetResult(net::ERR_IO_PENDING)); | 1469 EXPECT_EQ(net::OK, cb2.GetResult(net::ERR_IO_PENDING)); |
1443 EXPECT_EQ(net::OK, cb3.GetResult(net::ERR_IO_PENDING)); | 1470 EXPECT_EQ(net::OK, cb3.GetResult(net::ERR_IO_PENDING)); |
1444 EXPECT_EQ(net::OK, cb4.GetResult(net::ERR_IO_PENDING)); | 1471 EXPECT_EQ(net::OK, cb4.GetResult(net::ERR_IO_PENDING)); |
1445 | 1472 |
1446 EXPECT_EQ(kSize, entry->GetAvailableRange(offset, kSize, &offset)); | 1473 rv = entry->GetAvailableRange(offset, kSize, &offset, &cb5); |
| 1474 EXPECT_EQ(kSize, cb5.GetResult(rv)); |
1447 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2)); | 1475 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2)); |
1448 entry->Close(); | 1476 entry->Close(); |
1449 } | 1477 } |
OLD | NEW |