Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: net/http/http_cache_unittest.cc

Issue 2053133002: Remove MessageLoop::current()->RunUntilIdle() in net. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/http/http_cache.h" 5 #include "net/http/http_cache.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 1281 c->trans->Start(&request, c->callback.callback(), BoundNetLog());
1282 } 1282 }
1283 1283
1284 // All requests are waiting for the active entry. 1284 // All requests are waiting for the active entry.
1285 for (int i = 0; i < kNumTransactions; ++i) { 1285 for (int i = 0; i < kNumTransactions; ++i) {
1286 Context* c = context_list[i]; 1286 Context* c = context_list[i];
1287 EXPECT_EQ(LOAD_STATE_WAITING_FOR_CACHE, c->trans->GetLoadState()); 1287 EXPECT_EQ(LOAD_STATE_WAITING_FOR_CACHE, c->trans->GetLoadState());
1288 } 1288 }
1289 1289
1290 // Allow all requests to move from the Create queue to the active entry. 1290 // Allow all requests to move from the Create queue to the active entry.
1291 base::MessageLoop::current()->RunUntilIdle(); 1291 base::RunLoop().RunUntilIdle();
1292 1292
1293 // The first request should be a writer at this point, and the subsequent 1293 // The first request should be a writer at this point, and the subsequent
1294 // requests should be pending. 1294 // requests should be pending.
1295 1295
1296 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 1296 EXPECT_EQ(1, cache.network_layer()->transaction_count());
1297 EXPECT_EQ(0, cache.disk_cache()->open_count()); 1297 EXPECT_EQ(0, cache.disk_cache()->open_count());
1298 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1298 EXPECT_EQ(1, cache.disk_cache()->create_count());
1299 1299
1300 // All requests depend on the writer, and the writer is between Start and 1300 // All requests depend on the writer, and the writer is between Start and
1301 // Read, i.e. idle. 1301 // Read, i.e. idle.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 1346
1347 MockHttpRequest* this_request = &request; 1347 MockHttpRequest* this_request = &request;
1348 if (i == 1 || i == 2) 1348 if (i == 1 || i == 2)
1349 this_request = &reader_request; 1349 this_request = &reader_request;
1350 1350
1351 c->result = 1351 c->result =
1352 c->trans->Start(this_request, c->callback.callback(), BoundNetLog()); 1352 c->trans->Start(this_request, c->callback.callback(), BoundNetLog());
1353 } 1353 }
1354 1354
1355 // Allow all requests to move from the Create queue to the active entry. 1355 // Allow all requests to move from the Create queue to the active entry.
1356 base::MessageLoop::current()->RunUntilIdle(); 1356 base::RunLoop().RunUntilIdle();
1357 1357
1358 // The first request should be a writer at this point, and the subsequent 1358 // The first request should be a writer at this point, and the subsequent
1359 // requests should be pending. 1359 // requests should be pending.
1360 1360
1361 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 1361 EXPECT_EQ(1, cache.network_layer()->transaction_count());
1362 EXPECT_EQ(0, cache.disk_cache()->open_count()); 1362 EXPECT_EQ(0, cache.disk_cache()->open_count());
1363 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1363 EXPECT_EQ(1, cache.disk_cache()->create_count());
1364 1364
1365 Context* c = context_list[0]; 1365 Context* c = context_list[0];
1366 ASSERT_EQ(ERR_IO_PENDING, c->result); 1366 ASSERT_EQ(ERR_IO_PENDING, c->result);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 Context* c = context_list[i]; 1473 Context* c = context_list[i];
1474 1474
1475 c->result = cache.CreateTransaction(&c->trans); 1475 c->result = cache.CreateTransaction(&c->trans);
1476 ASSERT_EQ(OK, c->result); 1476 ASSERT_EQ(OK, c->result);
1477 1477
1478 c->result = 1478 c->result =
1479 c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 1479 c->trans->Start(&request, c->callback.callback(), BoundNetLog());
1480 } 1480 }
1481 1481
1482 // Allow all requests to move from the Create queue to the active entry. 1482 // Allow all requests to move from the Create queue to the active entry.
1483 base::MessageLoop::current()->RunUntilIdle(); 1483 base::RunLoop().RunUntilIdle();
1484 1484
1485 // The first request should be a writer at this point, and the subsequent 1485 // The first request should be a writer at this point, and the subsequent
1486 // requests should be pending. 1486 // requests should be pending.
1487 1487
1488 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 1488 EXPECT_EQ(1, cache.network_layer()->transaction_count());
1489 EXPECT_EQ(0, cache.disk_cache()->open_count()); 1489 EXPECT_EQ(0, cache.disk_cache()->open_count());
1490 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1490 EXPECT_EQ(1, cache.disk_cache()->create_count());
1491 1491
1492 // Now, make sure that the second request asks for the entry not to be stored. 1492 // Now, make sure that the second request asks for the entry not to be stored.
1493 request_handler.set_no_store(true); 1493 request_handler.set_no_store(true);
(...skipping 26 matching lines...) Expand all
1520 Context* c = context_list[i]; 1520 Context* c = context_list[i];
1521 1521
1522 c->result = cache.CreateTransaction(&c->trans); 1522 c->result = cache.CreateTransaction(&c->trans);
1523 ASSERT_EQ(OK, c->result); 1523 ASSERT_EQ(OK, c->result);
1524 1524
1525 c->result = 1525 c->result =
1526 c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 1526 c->trans->Start(&request, c->callback.callback(), BoundNetLog());
1527 } 1527 }
1528 1528
1529 // Allow all requests to move from the Create queue to the active entry. 1529 // Allow all requests to move from the Create queue to the active entry.
1530 base::MessageLoop::current()->RunUntilIdle(); 1530 base::RunLoop().RunUntilIdle();
1531 1531
1532 // The first request should be a writer at this point, and the subsequent 1532 // The first request should be a writer at this point, and the subsequent
1533 // requests should be pending. 1533 // requests should be pending.
1534 1534
1535 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 1535 EXPECT_EQ(1, cache.network_layer()->transaction_count());
1536 EXPECT_EQ(0, cache.disk_cache()->open_count()); 1536 EXPECT_EQ(0, cache.disk_cache()->open_count());
1537 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1537 EXPECT_EQ(1, cache.disk_cache()->create_count());
1538 1538
1539 for (int i = 0; i < kNumTransactions; ++i) { 1539 for (int i = 0; i < kNumTransactions; ++i) {
1540 Context* c = context_list[i]; 1540 Context* c = context_list[i];
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 ASSERT_EQ(OK, c->result); 1634 ASSERT_EQ(OK, c->result);
1635 1635
1636 c->result = c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 1636 c->result = c->trans->Start(&request, c->callback.callback(), BoundNetLog());
1637 EXPECT_EQ(ERR_IO_PENDING, c->result); 1637 EXPECT_EQ(ERR_IO_PENDING, c->result);
1638 1638
1639 // Release the reference that the mock disk cache keeps for this entry, so 1639 // Release the reference that the mock disk cache keeps for this entry, so
1640 // that we test that the http cache handles the cancellation correctly. 1640 // that we test that the http cache handles the cancellation correctly.
1641 cache.disk_cache()->ReleaseAll(); 1641 cache.disk_cache()->ReleaseAll();
1642 delete c; 1642 delete c;
1643 1643
1644 base::MessageLoop::current()->RunUntilIdle(); 1644 base::RunLoop().RunUntilIdle();
1645 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1645 EXPECT_EQ(1, cache.disk_cache()->create_count());
1646 } 1646 }
1647 1647
1648 // Tests that we delete/create entries even if multiple requests are queued. 1648 // Tests that we delete/create entries even if multiple requests are queued.
1649 TEST(HttpCache, SimpleGET_ManyWriters_BypassCache) { 1649 TEST(HttpCache, SimpleGET_ManyWriters_BypassCache) {
1650 MockHttpCache cache; 1650 MockHttpCache cache;
1651 1651
1652 MockHttpRequest request(kSimpleGET_Transaction); 1652 MockHttpRequest request(kSimpleGET_Transaction);
1653 request.load_flags = LOAD_BYPASS_CACHE; 1653 request.load_flags = LOAD_BYPASS_CACHE;
1654 1654
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 scoped_refptr<IOBuffer> buf(new IOBuffer(256)); 1735 scoped_refptr<IOBuffer> buf(new IOBuffer(256));
1736 rv = trans->Read(buf.get(), 256, callback.callback()); 1736 rv = trans->Read(buf.get(), 256, callback.callback());
1737 EXPECT_EQ(ERR_IO_PENDING, rv); 1737 EXPECT_EQ(ERR_IO_PENDING, rv);
1738 1738
1739 // Test that destroying the transaction while it is reading from the cache 1739 // Test that destroying the transaction while it is reading from the cache
1740 // works properly. 1740 // works properly.
1741 trans.reset(); 1741 trans.reset();
1742 1742
1743 // Make sure we pump any pending events, which should include a call to 1743 // Make sure we pump any pending events, which should include a call to
1744 // HttpCache::Transaction::OnCacheReadCompleted. 1744 // HttpCache::Transaction::OnCacheReadCompleted.
1745 base::MessageLoop::current()->RunUntilIdle(); 1745 base::RunLoop().RunUntilIdle();
1746 } 1746 }
1747 1747
1748 // Tests that we can delete the HttpCache and deal with queued transactions 1748 // Tests that we can delete the HttpCache and deal with queued transactions
1749 // ("waiting for the backend" as opposed to Active or Doomed entries). 1749 // ("waiting for the backend" as opposed to Active or Doomed entries).
1750 TEST(HttpCache, SimpleGET_ManyWriters_DeleteCache) { 1750 TEST(HttpCache, SimpleGET_ManyWriters_DeleteCache) {
1751 std::unique_ptr<MockHttpCache> cache( 1751 std::unique_ptr<MockHttpCache> cache(
1752 new MockHttpCache(base::WrapUnique(new MockBackendNoCbFactory()))); 1752 new MockHttpCache(base::WrapUnique(new MockBackendNoCbFactory())));
1753 1753
1754 MockHttpRequest request(kSimpleGET_Transaction); 1754 MockHttpRequest request(kSimpleGET_Transaction);
1755 1755
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1804 } 1804 }
1805 1805
1806 context_list[0]->result = context_list[0]->trans->Start( 1806 context_list[0]->result = context_list[0]->trans->Start(
1807 &request0, context_list[0]->callback.callback(), BoundNetLog()); 1807 &request0, context_list[0]->callback.callback(), BoundNetLog());
1808 context_list[1]->result = context_list[1]->trans->Start( 1808 context_list[1]->result = context_list[1]->trans->Start(
1809 &request1, context_list[1]->callback.callback(), BoundNetLog()); 1809 &request1, context_list[1]->callback.callback(), BoundNetLog());
1810 context_list[2]->result = context_list[2]->trans->Start( 1810 context_list[2]->result = context_list[2]->trans->Start(
1811 &request2, context_list[2]->callback.callback(), BoundNetLog()); 1811 &request2, context_list[2]->callback.callback(), BoundNetLog());
1812 1812
1813 // Just to make sure that everything is still pending. 1813 // Just to make sure that everything is still pending.
1814 base::MessageLoop::current()->RunUntilIdle(); 1814 base::RunLoop().RunUntilIdle();
1815 1815
1816 // The first request should be creating the disk cache. 1816 // The first request should be creating the disk cache.
1817 EXPECT_FALSE(context_list[0]->callback.have_result()); 1817 EXPECT_FALSE(context_list[0]->callback.have_result());
1818 1818
1819 factory->FinishCreation(); 1819 factory->FinishCreation();
1820 1820
1821 base::MessageLoop::current()->RunUntilIdle(); 1821 base::RunLoop().RunUntilIdle();
1822 EXPECT_EQ(3, cache.network_layer()->transaction_count()); 1822 EXPECT_EQ(3, cache.network_layer()->transaction_count());
1823 EXPECT_EQ(3, cache.disk_cache()->create_count()); 1823 EXPECT_EQ(3, cache.disk_cache()->create_count());
1824 1824
1825 for (int i = 0; i < kNumTransactions; ++i) { 1825 for (int i = 0; i < kNumTransactions; ++i) {
1826 EXPECT_TRUE(context_list[i]->callback.have_result()); 1826 EXPECT_TRUE(context_list[i]->callback.have_result());
1827 delete context_list[i]; 1827 delete context_list[i];
1828 } 1828 }
1829 } 1829 }
1830 1830
1831 // Tests that we can cancel requests that are queued waiting for the backend 1831 // Tests that we can cancel requests that are queued waiting for the backend
(...skipping 18 matching lines...) Expand all
1850 } 1850 }
1851 1851
1852 context_list[0]->result = context_list[0]->trans->Start( 1852 context_list[0]->result = context_list[0]->trans->Start(
1853 &request0, context_list[0]->callback.callback(), BoundNetLog()); 1853 &request0, context_list[0]->callback.callback(), BoundNetLog());
1854 context_list[1]->result = context_list[1]->trans->Start( 1854 context_list[1]->result = context_list[1]->trans->Start(
1855 &request1, context_list[1]->callback.callback(), BoundNetLog()); 1855 &request1, context_list[1]->callback.callback(), BoundNetLog());
1856 context_list[2]->result = context_list[2]->trans->Start( 1856 context_list[2]->result = context_list[2]->trans->Start(
1857 &request2, context_list[2]->callback.callback(), BoundNetLog()); 1857 &request2, context_list[2]->callback.callback(), BoundNetLog());
1858 1858
1859 // Just to make sure that everything is still pending. 1859 // Just to make sure that everything is still pending.
1860 base::MessageLoop::current()->RunUntilIdle(); 1860 base::RunLoop().RunUntilIdle();
1861 1861
1862 // The first request should be creating the disk cache. 1862 // The first request should be creating the disk cache.
1863 EXPECT_FALSE(context_list[0]->callback.have_result()); 1863 EXPECT_FALSE(context_list[0]->callback.have_result());
1864 1864
1865 // Cancel a request from the pending queue. 1865 // Cancel a request from the pending queue.
1866 delete context_list[1]; 1866 delete context_list[1];
1867 context_list[1] = NULL; 1867 context_list[1] = NULL;
1868 1868
1869 // Cancel the request that is creating the entry. 1869 // Cancel the request that is creating the entry.
1870 delete context_list[0]; 1870 delete context_list[0];
(...skipping 20 matching lines...) Expand all
1891 1891
1892 MockHttpRequest request(kSimpleGET_Transaction); 1892 MockHttpRequest request(kSimpleGET_Transaction);
1893 1893
1894 std::unique_ptr<Context> c(new Context()); 1894 std::unique_ptr<Context> c(new Context());
1895 c->result = cache->CreateTransaction(&c->trans); 1895 c->result = cache->CreateTransaction(&c->trans);
1896 ASSERT_EQ(OK, c->result); 1896 ASSERT_EQ(OK, c->result);
1897 1897
1898 c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 1898 c->trans->Start(&request, c->callback.callback(), BoundNetLog());
1899 1899
1900 // Just to make sure that everything is still pending. 1900 // Just to make sure that everything is still pending.
1901 base::MessageLoop::current()->RunUntilIdle(); 1901 base::RunLoop().RunUntilIdle();
1902 1902
1903 // The request should be creating the disk cache. 1903 // The request should be creating the disk cache.
1904 EXPECT_FALSE(c->callback.have_result()); 1904 EXPECT_FALSE(c->callback.have_result());
1905 1905
1906 // We cannot call FinishCreation because the factory itself will go away with 1906 // We cannot call FinishCreation because the factory itself will go away with
1907 // the cache, so grab the callback and attempt to use it. 1907 // the cache, so grab the callback and attempt to use it.
1908 CompletionCallback callback = factory->callback(); 1908 CompletionCallback callback = factory->callback();
1909 std::unique_ptr<disk_cache::Backend>* backend = factory->backend(); 1909 std::unique_ptr<disk_cache::Backend>* backend = factory->backend();
1910 1910
1911 cache.reset(); 1911 cache.reset();
1912 base::MessageLoop::current()->RunUntilIdle(); 1912 base::RunLoop().RunUntilIdle();
1913 1913
1914 backend->reset(); 1914 backend->reset();
1915 callback.Run(ERR_ABORTED); 1915 callback.Run(ERR_ABORTED);
1916 } 1916 }
1917 1917
1918 // Tests that we can delete the cache while creating the backend, from within 1918 // Tests that we can delete the cache while creating the backend, from within
1919 // one of the callbacks. 1919 // one of the callbacks.
1920 TEST(HttpCache, DeleteCacheWaitingForBackend2) { 1920 TEST(HttpCache, DeleteCacheWaitingForBackend2) {
1921 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory(); 1921 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory();
1922 MockHttpCache* cache = new MockHttpCache(base::WrapUnique(factory)); 1922 MockHttpCache* cache = new MockHttpCache(base::WrapUnique(factory));
(...skipping 11 matching lines...) Expand all
1934 ASSERT_EQ(OK, c->result); 1934 ASSERT_EQ(OK, c->result);
1935 1935
1936 c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 1936 c->trans->Start(&request, c->callback.callback(), BoundNetLog());
1937 1937
1938 // And another direct backend request. 1938 // And another direct backend request.
1939 TestCompletionCallback cb2; 1939 TestCompletionCallback cb2;
1940 rv = cache->http_cache()->GetBackend(&backend, cb2.callback()); 1940 rv = cache->http_cache()->GetBackend(&backend, cb2.callback());
1941 EXPECT_EQ(ERR_IO_PENDING, rv); 1941 EXPECT_EQ(ERR_IO_PENDING, rv);
1942 1942
1943 // Just to make sure that everything is still pending. 1943 // Just to make sure that everything is still pending.
1944 base::MessageLoop::current()->RunUntilIdle(); 1944 base::RunLoop().RunUntilIdle();
1945 1945
1946 // The request should be queued. 1946 // The request should be queued.
1947 EXPECT_FALSE(c->callback.have_result()); 1947 EXPECT_FALSE(c->callback.have_result());
1948 1948
1949 // Generate the callback. 1949 // Generate the callback.
1950 factory->FinishCreation(); 1950 factory->FinishCreation();
1951 rv = cb.WaitForResult(); 1951 rv = cb.WaitForResult();
1952 1952
1953 // The cache should be gone by now. 1953 // The cache should be gone by now.
1954 base::MessageLoop::current()->RunUntilIdle(); 1954 base::RunLoop().RunUntilIdle();
1955 EXPECT_EQ(OK, c->callback.GetResult(c->result)); 1955 EXPECT_EQ(OK, c->callback.GetResult(c->result));
1956 EXPECT_FALSE(cb2.have_result()); 1956 EXPECT_FALSE(cb2.have_result());
1957 } 1957 }
1958 1958
1959 // Fails only on bots. crbug.com/533640 1959 // Fails only on bots. crbug.com/533640
1960 #if defined(OS_ANDROID) 1960 #if defined(OS_ANDROID)
1961 #define MAYBE_TypicalGET_ConditionalRequest \ 1961 #define MAYBE_TypicalGET_ConditionalRequest \
1962 DISABLED_TypicalGET_ConditionalRequest 1962 DISABLED_TypicalGET_ConditionalRequest
1963 #else 1963 #else
1964 #define MAYBE_TypicalGET_ConditionalRequest TypicalGET_ConditionalRequest 1964 #define MAYBE_TypicalGET_ConditionalRequest TypicalGET_ConditionalRequest
(...skipping 1383 matching lines...) Expand 10 before | Expand all | Expand 10 after
3348 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 3348 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
3349 RemoveMockTransaction(&transaction); 3349 RemoveMockTransaction(&transaction);
3350 3350
3351 EXPECT_NE(std::string::npos, headers.find("HTTP/1.1 200 OK\n")); 3351 EXPECT_NE(std::string::npos, headers.find("HTTP/1.1 200 OK\n"));
3352 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 3352 EXPECT_EQ(2, cache.network_layer()->transaction_count());
3353 3353
3354 MockTransaction transaction2(kTypicalGET_Transaction); 3354 MockTransaction transaction2(kTypicalGET_Transaction);
3355 AddMockTransaction(&transaction2); 3355 AddMockTransaction(&transaction2);
3356 3356
3357 // Make sure we are done with the previous transaction. 3357 // Make sure we are done with the previous transaction.
3358 base::MessageLoop::current()->RunUntilIdle(); 3358 base::RunLoop().RunUntilIdle();
3359 3359
3360 // Load from the cache. 3360 // Load from the cache.
3361 transaction2.load_flags |= LOAD_ONLY_FROM_CACHE; 3361 transaction2.load_flags |= LOAD_ONLY_FROM_CACHE;
3362 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers); 3362 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers);
3363 3363
3364 EXPECT_NE(std::string::npos, headers.find("Foo: bar\n")); 3364 EXPECT_NE(std::string::npos, headers.find("Foo: bar\n"));
3365 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 3365 EXPECT_EQ(2, cache.network_layer()->transaction_count());
3366 EXPECT_EQ(2, cache.disk_cache()->open_count()); 3366 EXPECT_EQ(2, cache.disk_cache()->open_count());
3367 EXPECT_EQ(1, cache.disk_cache()->create_count()); 3367 EXPECT_EQ(1, cache.disk_cache()->create_count());
3368 RemoveMockTransaction(&transaction2); 3368 RemoveMockTransaction(&transaction2);
(...skipping 19 matching lines...) Expand all
3388 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 3388 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
3389 RemoveMockTransaction(&transaction); 3389 RemoveMockTransaction(&transaction);
3390 3390
3391 EXPECT_NE(std::string::npos, headers.find("HTTP/1.1 304 Not Modified\n")); 3391 EXPECT_NE(std::string::npos, headers.find("HTTP/1.1 304 Not Modified\n"));
3392 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 3392 EXPECT_EQ(2, cache.network_layer()->transaction_count());
3393 3393
3394 MockTransaction transaction2(kTypicalGET_Transaction); 3394 MockTransaction transaction2(kTypicalGET_Transaction);
3395 AddMockTransaction(&transaction2); 3395 AddMockTransaction(&transaction2);
3396 3396
3397 // Make sure we are done with the previous transaction. 3397 // Make sure we are done with the previous transaction.
3398 base::MessageLoop::current()->RunUntilIdle(); 3398 base::RunLoop().RunUntilIdle();
3399 3399
3400 // Load from the cache. 3400 // Load from the cache.
3401 transaction2.load_flags |= LOAD_ONLY_FROM_CACHE; 3401 transaction2.load_flags |= LOAD_ONLY_FROM_CACHE;
3402 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers); 3402 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers);
3403 3403
3404 EXPECT_NE(std::string::npos, headers.find("Foo: bar\n")); 3404 EXPECT_NE(std::string::npos, headers.find("Foo: bar\n"));
3405 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 3405 EXPECT_EQ(2, cache.network_layer()->transaction_count());
3406 EXPECT_EQ(2, cache.disk_cache()->open_count()); 3406 EXPECT_EQ(2, cache.disk_cache()->open_count());
3407 EXPECT_EQ(1, cache.disk_cache()->create_count()); 3407 EXPECT_EQ(1, cache.disk_cache()->create_count());
3408 RemoveMockTransaction(&transaction2); 3408 RemoveMockTransaction(&transaction2);
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
4082 // Read from the cache (40-49). 4082 // Read from the cache (40-49).
4083 RunTransactionTestWithResponse(cache.http_cache(), kRangeGET_TransactionOK, 4083 RunTransactionTestWithResponse(cache.http_cache(), kRangeGET_TransactionOK,
4084 &headers); 4084 &headers);
4085 4085
4086 Verify206Response(headers, 40, 49); 4086 Verify206Response(headers, 40, 49);
4087 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 4087 EXPECT_EQ(1, cache.network_layer()->transaction_count());
4088 EXPECT_EQ(1, cache.disk_cache()->open_count()); 4088 EXPECT_EQ(1, cache.disk_cache()->open_count());
4089 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4089 EXPECT_EQ(1, cache.disk_cache()->create_count());
4090 4090
4091 // Make sure we are done with the previous transaction. 4091 // Make sure we are done with the previous transaction.
4092 base::MessageLoop::current()->RunUntilIdle(); 4092 base::RunLoop().RunUntilIdle();
4093 4093
4094 // Write to the cache (30-39). 4094 // Write to the cache (30-39).
4095 MockTransaction transaction(kRangeGET_TransactionOK); 4095 MockTransaction transaction(kRangeGET_TransactionOK);
4096 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER; 4096 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER;
4097 transaction.data = "rg: 30-39 "; 4097 transaction.data = "rg: 30-39 ";
4098 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4098 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4099 4099
4100 Verify206Response(headers, 30, 39); 4100 Verify206Response(headers, 30, 39);
4101 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 4101 EXPECT_EQ(2, cache.network_layer()->transaction_count());
4102 EXPECT_EQ(2, cache.disk_cache()->open_count()); 4102 EXPECT_EQ(2, cache.disk_cache()->open_count());
4103 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4103 EXPECT_EQ(1, cache.disk_cache()->create_count());
4104 4104
4105 // Make sure we are done with the previous transaction. 4105 // Make sure we are done with the previous transaction.
4106 base::MessageLoop::current()->RunUntilIdle(); 4106 base::RunLoop().RunUntilIdle();
4107 4107
4108 // Write and read from the cache (20-59). 4108 // Write and read from the cache (20-59).
4109 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER; 4109 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER;
4110 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 "; 4110 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 ";
4111 BoundTestNetLog log; 4111 BoundTestNetLog log;
4112 LoadTimingInfo load_timing_info; 4112 LoadTimingInfo load_timing_info;
4113 RunTransactionTestWithResponseAndGetTiming( 4113 RunTransactionTestWithResponseAndGetTiming(
4114 cache.http_cache(), transaction, &headers, log.bound(), 4114 cache.http_cache(), transaction, &headers, log.bound(),
4115 &load_timing_info); 4115 &load_timing_info);
4116 4116
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4149 4149
4150 // Read from the cache (40-49). 4150 // Read from the cache (40-49).
4151 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4151 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4152 4152
4153 Verify206Response(headers, 40, 49); 4153 Verify206Response(headers, 40, 49);
4154 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 4154 EXPECT_EQ(1, cache.network_layer()->transaction_count());
4155 EXPECT_EQ(0, cache.disk_cache()->open_count()); 4155 EXPECT_EQ(0, cache.disk_cache()->open_count());
4156 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4156 EXPECT_EQ(1, cache.disk_cache()->create_count());
4157 4157
4158 // Make sure we are done with the previous transaction. 4158 // Make sure we are done with the previous transaction.
4159 base::MessageLoop::current()->RunUntilIdle(); 4159 base::RunLoop().RunUntilIdle();
4160 4160
4161 // Write to the cache (30-39). 4161 // Write to the cache (30-39).
4162 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER; 4162 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER;
4163 transaction.data = "rg: 30-39 "; 4163 transaction.data = "rg: 30-39 ";
4164 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4164 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4165 4165
4166 Verify206Response(headers, 30, 39); 4166 Verify206Response(headers, 30, 39);
4167 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 4167 EXPECT_EQ(2, cache.network_layer()->transaction_count());
4168 EXPECT_EQ(1, cache.disk_cache()->open_count()); 4168 EXPECT_EQ(1, cache.disk_cache()->open_count());
4169 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4169 EXPECT_EQ(1, cache.disk_cache()->create_count());
4170 4170
4171 // Make sure we are done with the previous transaction. 4171 // Make sure we are done with the previous transaction.
4172 base::MessageLoop::current()->RunUntilIdle(); 4172 base::RunLoop().RunUntilIdle();
4173 4173
4174 // Write and read from the cache (20-59). 4174 // Write and read from the cache (20-59).
4175 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER; 4175 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER;
4176 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 "; 4176 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 ";
4177 BoundTestNetLog log; 4177 BoundTestNetLog log;
4178 LoadTimingInfo load_timing_info; 4178 LoadTimingInfo load_timing_info;
4179 RunTransactionTestWithResponseAndGetTiming( 4179 RunTransactionTestWithResponseAndGetTiming(
4180 cache.http_cache(), transaction, &headers, log.bound(), 4180 cache.http_cache(), transaction, &headers, log.bound(),
4181 &load_timing_info); 4181 &load_timing_info);
4182 4182
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
4649 transaction.request_headers = "Range: bytes = -10\r\n" EXTRA_HEADER; 4649 transaction.request_headers = "Range: bytes = -10\r\n" EXTRA_HEADER;
4650 transaction.data = "rg: 70-79 "; 4650 transaction.data = "rg: 70-79 ";
4651 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4651 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4652 4652
4653 Verify206Response(headers, 70, 79); 4653 Verify206Response(headers, 70, 79);
4654 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 4654 EXPECT_EQ(1, cache.network_layer()->transaction_count());
4655 EXPECT_EQ(0, cache.disk_cache()->open_count()); 4655 EXPECT_EQ(0, cache.disk_cache()->open_count());
4656 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4656 EXPECT_EQ(1, cache.disk_cache()->create_count());
4657 4657
4658 // Make sure we are done with the previous transaction. 4658 // Make sure we are done with the previous transaction.
4659 base::MessageLoop::current()->RunUntilIdle(); 4659 base::RunLoop().RunUntilIdle();
4660 4660
4661 // Write and read from the cache (60-79). 4661 // Write and read from the cache (60-79).
4662 transaction.request_headers = "Range: bytes = 60-\r\n" EXTRA_HEADER; 4662 transaction.request_headers = "Range: bytes = 60-\r\n" EXTRA_HEADER;
4663 transaction.data = "rg: 60-69 rg: 70-79 "; 4663 transaction.data = "rg: 60-69 rg: 70-79 ";
4664 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4664 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4665 4665
4666 Verify206Response(headers, 60, 79); 4666 Verify206Response(headers, 60, 79);
4667 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 4667 EXPECT_EQ(2, cache.network_layer()->transaction_count());
4668 EXPECT_EQ(1, cache.disk_cache()->open_count()); 4668 EXPECT_EQ(1, cache.disk_cache()->open_count());
4669 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4669 EXPECT_EQ(1, cache.disk_cache()->create_count());
(...skipping 18 matching lines...) Expand all
4688 transaction.request_headers = "Range: bytes = 70-\r\n" EXTRA_HEADER; 4688 transaction.request_headers = "Range: bytes = 70-\r\n" EXTRA_HEADER;
4689 transaction.data = "rg: 70-79 "; 4689 transaction.data = "rg: 70-79 ";
4690 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4690 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4691 4691
4692 Verify206Response(headers, 70, 79); 4692 Verify206Response(headers, 70, 79);
4693 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 4693 EXPECT_EQ(1, cache.network_layer()->transaction_count());
4694 EXPECT_EQ(0, cache.disk_cache()->open_count()); 4694 EXPECT_EQ(0, cache.disk_cache()->open_count());
4695 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4695 EXPECT_EQ(1, cache.disk_cache()->create_count());
4696 4696
4697 // Make sure we are done with the previous transaction. 4697 // Make sure we are done with the previous transaction.
4698 base::MessageLoop::current()->RunUntilIdle(); 4698 base::RunLoop().RunUntilIdle();
4699 4699
4700 // Write and read from the cache (60-79). 4700 // Write and read from the cache (60-79).
4701 transaction.request_headers = "Range: bytes = -20\r\n" EXTRA_HEADER; 4701 transaction.request_headers = "Range: bytes = -20\r\n" EXTRA_HEADER;
4702 transaction.data = "rg: 60-69 rg: 70-79 "; 4702 transaction.data = "rg: 60-69 rg: 70-79 ";
4703 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 4703 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
4704 4704
4705 Verify206Response(headers, 60, 79); 4705 Verify206Response(headers, 60, 79);
4706 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 4706 EXPECT_EQ(2, cache.network_layer()->transaction_count());
4707 EXPECT_EQ(1, cache.disk_cache()->open_count()); 4707 EXPECT_EQ(1, cache.disk_cache()->open_count());
4708 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4708 EXPECT_EQ(1, cache.disk_cache()->create_count());
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
5034 handler.set_not_modified(true); 5034 handler.set_not_modified(true);
5035 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers); 5035 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers);
5036 5036
5037 // We are expecting a 206. 5037 // We are expecting a 206.
5038 Verify206Response(headers, 40, 49); 5038 Verify206Response(headers, 40, 49);
5039 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 5039 EXPECT_EQ(2, cache.network_layer()->transaction_count());
5040 EXPECT_EQ(1, cache.disk_cache()->open_count()); 5040 EXPECT_EQ(1, cache.disk_cache()->open_count());
5041 EXPECT_EQ(1, cache.disk_cache()->create_count()); 5041 EXPECT_EQ(1, cache.disk_cache()->create_count());
5042 5042
5043 // The last transaction has finished so make sure the entry is deactivated. 5043 // The last transaction has finished so make sure the entry is deactivated.
5044 base::MessageLoop::current()->RunUntilIdle(); 5044 base::RunLoop().RunUntilIdle();
5045 5045
5046 // Make a request for an invalid range. 5046 // Make a request for an invalid range.
5047 MockTransaction transaction3(kRangeGET_TransactionOK); 5047 MockTransaction transaction3(kRangeGET_TransactionOK);
5048 transaction3.request_headers = "Range: bytes = 80-90\r\n" EXTRA_HEADER; 5048 transaction3.request_headers = "Range: bytes = 80-90\r\n" EXTRA_HEADER;
5049 transaction3.data = transaction.data; 5049 transaction3.data = transaction.data;
5050 transaction3.load_flags = LOAD_PREFERRING_CACHE; 5050 transaction3.load_flags = LOAD_PREFERRING_CACHE;
5051 RunTransactionTestWithResponse(cache.http_cache(), transaction3, &headers); 5051 RunTransactionTestWithResponse(cache.http_cache(), transaction3, &headers);
5052 EXPECT_EQ(2, cache.disk_cache()->open_count()); 5052 EXPECT_EQ(2, cache.disk_cache()->open_count());
5053 EXPECT_EQ(0U, headers.find("HTTP/1.1 200 ")); 5053 EXPECT_EQ(0U, headers.find("HTTP/1.1 200 "));
5054 EXPECT_EQ(std::string::npos, headers.find("Content-Range:")); 5054 EXPECT_EQ(std::string::npos, headers.find("Content-Range:"));
5055 EXPECT_EQ(std::string::npos, headers.find("Content-Length: 80")); 5055 EXPECT_EQ(std::string::npos, headers.find("Content-Length: 80"));
5056 5056
5057 // Make sure the entry is deactivated. 5057 // Make sure the entry is deactivated.
5058 base::MessageLoop::current()->RunUntilIdle(); 5058 base::RunLoop().RunUntilIdle();
5059 5059
5060 // Even though the request was invalid, we should have the entry. 5060 // Even though the request was invalid, we should have the entry.
5061 RunTransactionTest(cache.http_cache(), transaction2); 5061 RunTransactionTest(cache.http_cache(), transaction2);
5062 EXPECT_EQ(3, cache.disk_cache()->open_count()); 5062 EXPECT_EQ(3, cache.disk_cache()->open_count());
5063 5063
5064 // Make sure the entry is deactivated. 5064 // Make sure the entry is deactivated.
5065 base::MessageLoop::current()->RunUntilIdle(); 5065 base::RunLoop().RunUntilIdle();
5066 5066
5067 // Now we should receive a range from the server and drop the stored entry. 5067 // Now we should receive a range from the server and drop the stored entry.
5068 handler.set_not_modified(false); 5068 handler.set_not_modified(false);
5069 transaction2.request_headers = kRangeGET_TransactionOK.request_headers; 5069 transaction2.request_headers = kRangeGET_TransactionOK.request_headers;
5070 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers); 5070 RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers);
5071 Verify206Response(headers, 40, 49); 5071 Verify206Response(headers, 40, 49);
5072 EXPECT_EQ(4, cache.network_layer()->transaction_count()); 5072 EXPECT_EQ(4, cache.network_layer()->transaction_count());
5073 EXPECT_EQ(4, cache.disk_cache()->open_count()); 5073 EXPECT_EQ(4, cache.disk_cache()->open_count());
5074 EXPECT_EQ(1, cache.disk_cache()->create_count()); 5074 EXPECT_EQ(1, cache.disk_cache()->create_count());
5075 5075
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
5283 // active entry (no open or create). 5283 // active entry (no open or create).
5284 5284
5285 c = new Context(); 5285 c = new Context();
5286 rv = cache.CreateTransaction(&c->trans); 5286 rv = cache.CreateTransaction(&c->trans);
5287 ASSERT_EQ(OK, rv); 5287 ASSERT_EQ(OK, rv);
5288 5288
5289 rv = c->trans->Start(&request, c->callback.callback(), BoundNetLog()); 5289 rv = c->trans->Start(&request, c->callback.callback(), BoundNetLog());
5290 EXPECT_EQ(ERR_IO_PENDING, rv); 5290 EXPECT_EQ(ERR_IO_PENDING, rv);
5291 5291
5292 MockDiskEntry::IgnoreCallbacks(true); 5292 MockDiskEntry::IgnoreCallbacks(true);
5293 base::MessageLoop::current()->RunUntilIdle(); 5293 base::RunLoop().RunUntilIdle();
5294 MockDiskEntry::IgnoreCallbacks(false); 5294 MockDiskEntry::IgnoreCallbacks(false);
5295 5295
5296 // The new transaction is waiting for the query range callback. 5296 // The new transaction is waiting for the query range callback.
5297 delete c; 5297 delete c;
5298 5298
5299 // And we should not crash when the callback is delivered. 5299 // And we should not crash when the callback is delivered.
5300 base::MessageLoop::current()->RunUntilIdle(); 5300 base::RunLoop().RunUntilIdle();
5301 5301
5302 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 5302 EXPECT_EQ(2, cache.network_layer()->transaction_count());
5303 EXPECT_EQ(1, cache.disk_cache()->open_count()); 5303 EXPECT_EQ(1, cache.disk_cache()->open_count());
5304 EXPECT_EQ(1, cache.disk_cache()->create_count()); 5304 EXPECT_EQ(1, cache.disk_cache()->create_count());
5305 RemoveMockTransaction(&kRangeGET_TransactionOK); 5305 RemoveMockTransaction(&kRangeGET_TransactionOK);
5306 } 5306 }
5307 5307
5308 // Tests that an invalid range response results in no cached entry. 5308 // Tests that an invalid range response results in no cached entry.
5309 TEST(HttpCache, RangeGET_InvalidResponse1) { 5309 TEST(HttpCache, RangeGET_InvalidResponse1) {
5310 MockHttpCache cache; 5310 MockHttpCache cache;
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
6002 EXPECT_EQ(5, c->callback.GetResult(rv)); 6002 EXPECT_EQ(5, c->callback.GetResult(rv));
6003 6003
6004 // Cancel the requests. 6004 // Cancel the requests.
6005 delete c; 6005 delete c;
6006 delete pending; 6006 delete pending;
6007 6007
6008 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6008 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6009 EXPECT_EQ(1, cache.disk_cache()->open_count()); 6009 EXPECT_EQ(1, cache.disk_cache()->open_count());
6010 EXPECT_EQ(2, cache.disk_cache()->create_count()); 6010 EXPECT_EQ(2, cache.disk_cache()->create_count());
6011 6011
6012 base::MessageLoop::current()->RunUntilIdle(); 6012 base::RunLoop().RunUntilIdle();
6013 RemoveMockTransaction(&transaction); 6013 RemoveMockTransaction(&transaction);
6014 } 6014 }
6015 6015
6016 // Tests that we delete truncated entries if the server changes its mind midway. 6016 // Tests that we delete truncated entries if the server changes its mind midway.
6017 TEST(HttpCache, GET_IncompleteResource2) { 6017 TEST(HttpCache, GET_IncompleteResource2) {
6018 MockHttpCache cache; 6018 MockHttpCache cache;
6019 AddMockTransaction(&kRangeGET_TransactionOK); 6019 AddMockTransaction(&kRangeGET_TransactionOK);
6020 6020
6021 // Content-length will be intentionally bad. 6021 // Content-length will be intentionally bad.
6022 std::string raw_headers("HTTP/1.1 200 OK\n" 6022 std::string raw_headers("HTTP/1.1 200 OK\n"
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
6358 // Destroy transaction when going out of scope. We have not actually 6358 // Destroy transaction when going out of scope. We have not actually
6359 // read the response body -- want to test that it is still getting cached. 6359 // read the response body -- want to test that it is still getting cached.
6360 } 6360 }
6361 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6361 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6362 EXPECT_EQ(0, cache.disk_cache()->open_count()); 6362 EXPECT_EQ(0, cache.disk_cache()->open_count());
6363 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6363 EXPECT_EQ(1, cache.disk_cache()->create_count());
6364 6364
6365 // Active entries in the cache are not retired synchronously. Make 6365 // Active entries in the cache are not retired synchronously. Make
6366 // sure the next run hits the MockHttpCache and open_count is 6366 // sure the next run hits the MockHttpCache and open_count is
6367 // correct. 6367 // correct.
6368 base::MessageLoop::current()->RunUntilIdle(); 6368 base::RunLoop().RunUntilIdle();
6369 6369
6370 // Read from the cache. 6370 // Read from the cache.
6371 { 6371 {
6372 std::unique_ptr<HttpTransaction> trans; 6372 std::unique_ptr<HttpTransaction> trans;
6373 ASSERT_EQ(OK, cache.CreateTransaction(&trans)); 6373 ASSERT_EQ(OK, cache.CreateTransaction(&trans));
6374 6374
6375 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6375 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6376 if (rv == ERR_IO_PENDING) 6376 if (rv == ERR_IO_PENDING)
6377 rv = callback.WaitForResult(); 6377 rv = callback.WaitForResult();
6378 ASSERT_EQ(OK, rv); 6378 ASSERT_EQ(OK, rv);
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
6683 memset(buf->data(), 0, buf->size()); 6683 memset(buf->data(), 0, buf->size());
6684 base::strlcpy(buf->data(), "Hi there", buf->size()); 6684 base::strlcpy(buf->data(), "Hi there", buf->size());
6685 cache.http_cache()->WriteMetadata(GURL(kSimpleGET_Transaction.url), 6685 cache.http_cache()->WriteMetadata(GURL(kSimpleGET_Transaction.url),
6686 DEFAULT_PRIORITY, response.response_time, 6686 DEFAULT_PRIORITY, response.response_time,
6687 buf.get(), buf->size()); 6687 buf.get(), buf->size());
6688 6688
6689 // Release the buffer before the operation takes place. 6689 // Release the buffer before the operation takes place.
6690 buf = NULL; 6690 buf = NULL;
6691 6691
6692 // Makes sure we finish pending operations. 6692 // Makes sure we finish pending operations.
6693 base::MessageLoop::current()->RunUntilIdle(); 6693 base::RunLoop().RunUntilIdle();
6694 6694
6695 RunTransactionTestWithResponseInfo(cache.http_cache(), kSimpleGET_Transaction, 6695 RunTransactionTestWithResponseInfo(cache.http_cache(), kSimpleGET_Transaction,
6696 &response); 6696 &response);
6697 ASSERT_TRUE(response.metadata.get() != NULL); 6697 ASSERT_TRUE(response.metadata.get() != NULL);
6698 EXPECT_EQ(50, response.metadata->size()); 6698 EXPECT_EQ(50, response.metadata->size());
6699 EXPECT_EQ(0, strcmp(response.metadata->data(), "Hi there")); 6699 EXPECT_EQ(0, strcmp(response.metadata->data(), "Hi there"));
6700 6700
6701 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6701 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6702 EXPECT_EQ(2, cache.disk_cache()->open_count()); 6702 EXPECT_EQ(2, cache.disk_cache()->open_count());
6703 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6703 EXPECT_EQ(1, cache.disk_cache()->create_count());
(...skipping 13 matching lines...) Expand all
6717 scoped_refptr<IOBufferWithSize> buf(new IOBufferWithSize(50)); 6717 scoped_refptr<IOBufferWithSize> buf(new IOBufferWithSize(50));
6718 memset(buf->data(), 0, buf->size()); 6718 memset(buf->data(), 0, buf->size());
6719 base::strlcpy(buf->data(), "Hi there", buf->size()); 6719 base::strlcpy(buf->data(), "Hi there", buf->size());
6720 base::Time expected_time = response.response_time - 6720 base::Time expected_time = response.response_time -
6721 base::TimeDelta::FromMilliseconds(20); 6721 base::TimeDelta::FromMilliseconds(20);
6722 cache.http_cache()->WriteMetadata(GURL(kSimpleGET_Transaction.url), 6722 cache.http_cache()->WriteMetadata(GURL(kSimpleGET_Transaction.url),
6723 DEFAULT_PRIORITY, expected_time, buf.get(), 6723 DEFAULT_PRIORITY, expected_time, buf.get(),
6724 buf->size()); 6724 buf->size());
6725 6725
6726 // Makes sure we finish pending operations. 6726 // Makes sure we finish pending operations.
6727 base::MessageLoop::current()->RunUntilIdle(); 6727 base::RunLoop().RunUntilIdle();
6728 6728
6729 RunTransactionTestWithResponseInfo(cache.http_cache(), kSimpleGET_Transaction, 6729 RunTransactionTestWithResponseInfo(cache.http_cache(), kSimpleGET_Transaction,
6730 &response); 6730 &response);
6731 EXPECT_TRUE(response.metadata.get() == NULL); 6731 EXPECT_TRUE(response.metadata.get() == NULL);
6732 6732
6733 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6733 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6734 EXPECT_EQ(2, cache.disk_cache()->open_count()); 6734 EXPECT_EQ(2, cache.disk_cache()->open_count());
6735 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6735 EXPECT_EQ(1, cache.disk_cache()->create_count());
6736 } 6736 }
6737 6737
(...skipping 10 matching lines...) Expand all
6748 6748
6749 // Write meta data to the same entry. 6749 // Write meta data to the same entry.
6750 scoped_refptr<IOBufferWithSize> buf(new IOBufferWithSize(50)); 6750 scoped_refptr<IOBufferWithSize> buf(new IOBufferWithSize(50));
6751 memset(buf->data(), 0, buf->size()); 6751 memset(buf->data(), 0, buf->size());
6752 base::strlcpy(buf->data(), "Hi there", buf->size()); 6752 base::strlcpy(buf->data(), "Hi there", buf->size());
6753 cache.http_cache()->WriteMetadata(GURL(kTypicalGET_Transaction.url), 6753 cache.http_cache()->WriteMetadata(GURL(kTypicalGET_Transaction.url),
6754 DEFAULT_PRIORITY, response.response_time, 6754 DEFAULT_PRIORITY, response.response_time,
6755 buf.get(), buf->size()); 6755 buf.get(), buf->size());
6756 6756
6757 // Makes sure we finish pending operations. 6757 // Makes sure we finish pending operations.
6758 base::MessageLoop::current()->RunUntilIdle(); 6758 base::RunLoop().RunUntilIdle();
6759 6759
6760 // Start with a READ mode transaction. 6760 // Start with a READ mode transaction.
6761 MockTransaction trans1(kTypicalGET_Transaction); 6761 MockTransaction trans1(kTypicalGET_Transaction);
6762 trans1.load_flags = LOAD_ONLY_FROM_CACHE; 6762 trans1.load_flags = LOAD_ONLY_FROM_CACHE;
6763 6763
6764 RunTransactionTestWithResponseInfo(cache.http_cache(), trans1, &response); 6764 RunTransactionTestWithResponseInfo(cache.http_cache(), trans1, &response);
6765 ASSERT_TRUE(response.metadata.get() != NULL); 6765 ASSERT_TRUE(response.metadata.get() != NULL);
6766 EXPECT_EQ(50, response.metadata->size()); 6766 EXPECT_EQ(50, response.metadata->size());
6767 EXPECT_EQ(0, strcmp(response.metadata->data(), "Hi there")); 6767 EXPECT_EQ(0, strcmp(response.metadata->data(), "Hi there"));
6768 6768
6769 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6769 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6770 EXPECT_EQ(2, cache.disk_cache()->open_count()); 6770 EXPECT_EQ(2, cache.disk_cache()->open_count());
6771 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6771 EXPECT_EQ(1, cache.disk_cache()->create_count());
6772 base::MessageLoop::current()->RunUntilIdle(); 6772 base::RunLoop().RunUntilIdle();
6773 6773
6774 // Now make sure that the entry is re-validated with the server. 6774 // Now make sure that the entry is re-validated with the server.
6775 trans1.load_flags = LOAD_VALIDATE_CACHE; 6775 trans1.load_flags = LOAD_VALIDATE_CACHE;
6776 trans1.status = "HTTP/1.1 304 Not Modified"; 6776 trans1.status = "HTTP/1.1 304 Not Modified";
6777 AddMockTransaction(&trans1); 6777 AddMockTransaction(&trans1);
6778 6778
6779 response.metadata = NULL; 6779 response.metadata = NULL;
6780 RunTransactionTestWithResponseInfo(cache.http_cache(), trans1, &response); 6780 RunTransactionTestWithResponseInfo(cache.http_cache(), trans1, &response);
6781 EXPECT_TRUE(response.metadata.get() != NULL); 6781 EXPECT_TRUE(response.metadata.get() != NULL);
6782 6782
6783 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 6783 EXPECT_EQ(2, cache.network_layer()->transaction_count());
6784 EXPECT_EQ(3, cache.disk_cache()->open_count()); 6784 EXPECT_EQ(3, cache.disk_cache()->open_count());
6785 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6785 EXPECT_EQ(1, cache.disk_cache()->create_count());
6786 base::MessageLoop::current()->RunUntilIdle(); 6786 base::RunLoop().RunUntilIdle();
6787 RemoveMockTransaction(&trans1); 6787 RemoveMockTransaction(&trans1);
6788 6788
6789 // Now return 200 when validating the entry so the metadata will be lost. 6789 // Now return 200 when validating the entry so the metadata will be lost.
6790 MockTransaction trans2(kTypicalGET_Transaction); 6790 MockTransaction trans2(kTypicalGET_Transaction);
6791 trans2.load_flags = LOAD_VALIDATE_CACHE; 6791 trans2.load_flags = LOAD_VALIDATE_CACHE;
6792 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response); 6792 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response);
6793 EXPECT_TRUE(response.metadata.get() == NULL); 6793 EXPECT_TRUE(response.metadata.get() == NULL);
6794 6794
6795 EXPECT_EQ(3, cache.network_layer()->transaction_count()); 6795 EXPECT_EQ(3, cache.network_layer()->transaction_count());
6796 EXPECT_EQ(4, cache.disk_cache()->open_count()); 6796 EXPECT_EQ(4, cache.disk_cache()->open_count());
(...skipping 16 matching lines...) Expand all
6813 6813
6814 scoped_refptr<IOBuffer> buf(new IOBuffer(256)); 6814 scoped_refptr<IOBuffer> buf(new IOBuffer(256));
6815 rv = trans->Read(buf.get(), 256, callback.callback()); 6815 rv = trans->Read(buf.get(), 256, callback.callback());
6816 EXPECT_GT(callback.GetResult(rv), 0); 6816 EXPECT_GT(callback.GetResult(rv), 0);
6817 6817
6818 // Now make sure that the entry is preserved. 6818 // Now make sure that the entry is preserved.
6819 trans->DoneReading(); 6819 trans->DoneReading();
6820 } 6820 }
6821 6821
6822 // Make sure that the ActiveEntry is gone. 6822 // Make sure that the ActiveEntry is gone.
6823 base::MessageLoop::current()->RunUntilIdle(); 6823 base::RunLoop().RunUntilIdle();
6824 6824
6825 // Read from the cache. 6825 // Read from the cache.
6826 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 6826 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
6827 6827
6828 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6828 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6829 EXPECT_EQ(1, cache.disk_cache()->open_count()); 6829 EXPECT_EQ(1, cache.disk_cache()->open_count());
6830 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6830 EXPECT_EQ(1, cache.disk_cache()->create_count());
6831 } 6831 }
6832 6832
6833 // Tests that we don't mark entries as truncated and release the cache 6833 // Tests that we don't mark entries as truncated and release the cache
(...skipping 10 matching lines...) Expand all
6844 ASSERT_EQ(OK, cache.CreateTransaction(&trans)); 6844 ASSERT_EQ(OK, cache.CreateTransaction(&trans));
6845 6845
6846 MockHttpRequest request(transaction); 6846 MockHttpRequest request(transaction);
6847 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6847 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6848 EXPECT_EQ(OK, callback.GetResult(rv)); 6848 EXPECT_EQ(OK, callback.GetResult(rv));
6849 6849
6850 trans->DoneReading(); 6850 trans->DoneReading();
6851 // Leave the transaction around. 6851 // Leave the transaction around.
6852 6852
6853 // Make sure that the ActiveEntry is gone. 6853 // Make sure that the ActiveEntry is gone.
6854 base::MessageLoop::current()->RunUntilIdle(); 6854 base::RunLoop().RunUntilIdle();
6855 6855
6856 // Read from the cache. This should not deadlock. 6856 // Read from the cache. This should not deadlock.
6857 RunTransactionTest(cache.http_cache(), transaction); 6857 RunTransactionTest(cache.http_cache(), transaction);
6858 6858
6859 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6859 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6860 EXPECT_EQ(1, cache.disk_cache()->open_count()); 6860 EXPECT_EQ(1, cache.disk_cache()->open_count());
6861 EXPECT_EQ(1, cache.disk_cache()->create_count()); 6861 EXPECT_EQ(1, cache.disk_cache()->create_count());
6862 } 6862 }
6863 6863
6864 // Tests that we stop caching when told. 6864 // Tests that we stop caching when told.
(...skipping 16 matching lines...) Expand all
6881 trans->StopCaching(); 6881 trans->StopCaching();
6882 6882
6883 // We should be able to keep reading. 6883 // We should be able to keep reading.
6884 rv = trans->Read(buf.get(), 256, callback.callback()); 6884 rv = trans->Read(buf.get(), 256, callback.callback());
6885 EXPECT_GT(callback.GetResult(rv), 0); 6885 EXPECT_GT(callback.GetResult(rv), 0);
6886 rv = trans->Read(buf.get(), 256, callback.callback()); 6886 rv = trans->Read(buf.get(), 256, callback.callback());
6887 EXPECT_EQ(0, callback.GetResult(rv)); 6887 EXPECT_EQ(0, callback.GetResult(rv));
6888 } 6888 }
6889 6889
6890 // Make sure that the ActiveEntry is gone. 6890 // Make sure that the ActiveEntry is gone.
6891 base::MessageLoop::current()->RunUntilIdle(); 6891 base::RunLoop().RunUntilIdle();
6892 6892
6893 // Verify that the entry is gone. 6893 // Verify that the entry is gone.
6894 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 6894 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
6895 6895
6896 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 6896 EXPECT_EQ(2, cache.network_layer()->transaction_count());
6897 EXPECT_EQ(0, cache.disk_cache()->open_count()); 6897 EXPECT_EQ(0, cache.disk_cache()->open_count());
6898 EXPECT_EQ(2, cache.disk_cache()->create_count()); 6898 EXPECT_EQ(2, cache.disk_cache()->create_count());
6899 } 6899 }
6900 6900
6901 // Tests that we stop caching when told, even if DoneReading is called 6901 // Tests that we stop caching when told, even if DoneReading is called
(...skipping 20 matching lines...) Expand all
6922 rv = trans->Read(buf.get(), 256, callback.callback()); 6922 rv = trans->Read(buf.get(), 256, callback.callback());
6923 EXPECT_GT(callback.GetResult(rv), 0); 6923 EXPECT_GT(callback.GetResult(rv), 0);
6924 rv = trans->Read(buf.get(), 256, callback.callback()); 6924 rv = trans->Read(buf.get(), 256, callback.callback());
6925 EXPECT_EQ(0, callback.GetResult(rv)); 6925 EXPECT_EQ(0, callback.GetResult(rv));
6926 6926
6927 // We should be able to call DoneReading. 6927 // We should be able to call DoneReading.
6928 trans->DoneReading(); 6928 trans->DoneReading();
6929 } 6929 }
6930 6930
6931 // Make sure that the ActiveEntry is gone. 6931 // Make sure that the ActiveEntry is gone.
6932 base::MessageLoop::current()->RunUntilIdle(); 6932 base::RunLoop().RunUntilIdle();
6933 6933
6934 // Verify that the entry is gone. 6934 // Verify that the entry is gone.
6935 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 6935 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
6936 6936
6937 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 6937 EXPECT_EQ(2, cache.network_layer()->transaction_count());
6938 EXPECT_EQ(0, cache.disk_cache()->open_count()); 6938 EXPECT_EQ(0, cache.disk_cache()->open_count());
6939 EXPECT_EQ(2, cache.disk_cache()->create_count()); 6939 EXPECT_EQ(2, cache.disk_cache()->create_count());
6940 } 6940 }
6941 6941
6942 // Tests that we stop caching when told, when using auth. 6942 // Tests that we stop caching when told, when using auth.
(...skipping 14 matching lines...) Expand all
6957 6957
6958 trans->StopCaching(); 6958 trans->StopCaching();
6959 6959
6960 scoped_refptr<IOBuffer> buf(new IOBuffer(256)); 6960 scoped_refptr<IOBuffer> buf(new IOBuffer(256));
6961 rv = trans->Read(buf.get(), 10, callback.callback()); 6961 rv = trans->Read(buf.get(), 10, callback.callback());
6962 EXPECT_EQ(callback.GetResult(rv), 10); 6962 EXPECT_EQ(callback.GetResult(rv), 10);
6963 } 6963 }
6964 RemoveMockTransaction(&mock_transaction); 6964 RemoveMockTransaction(&mock_transaction);
6965 6965
6966 // Make sure that the ActiveEntry is gone. 6966 // Make sure that the ActiveEntry is gone.
6967 base::MessageLoop::current()->RunUntilIdle(); 6967 base::RunLoop().RunUntilIdle();
6968 6968
6969 // Verify that the entry is gone. 6969 // Verify that the entry is gone.
6970 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 6970 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
6971 6971
6972 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 6972 EXPECT_EQ(2, cache.network_layer()->transaction_count());
6973 EXPECT_EQ(0, cache.disk_cache()->open_count()); 6973 EXPECT_EQ(0, cache.disk_cache()->open_count());
6974 EXPECT_EQ(2, cache.disk_cache()->create_count()); 6974 EXPECT_EQ(2, cache.disk_cache()->create_count());
6975 } 6975 }
6976 6976
6977 // Tests that when we are told to stop caching we don't throw away valid data. 6977 // Tests that when we are told to stop caching we don't throw away valid data.
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
7279 // Read bytes 40-49 from the network. 7279 // Read bytes 40-49 from the network.
7280 int64_t sent, received; 7280 int64_t sent, received;
7281 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); 7281 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received);
7282 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); 7282 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent);
7283 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); 7283 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received);
7284 7284
7285 // Read bytes 40-49 from the cache. 7285 // Read bytes 40-49 from the cache.
7286 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); 7286 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received);
7287 EXPECT_EQ(0, sent); 7287 EXPECT_EQ(0, sent);
7288 EXPECT_EQ(0, received); 7288 EXPECT_EQ(0, received);
7289 base::MessageLoop::current()->RunUntilIdle(); 7289 base::RunLoop().RunUntilIdle();
7290 7290
7291 // Read bytes 30-39 from the network. 7291 // Read bytes 30-39 from the network.
7292 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER; 7292 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER;
7293 transaction.data = "rg: 30-39 "; 7293 transaction.data = "rg: 30-39 ";
7294 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); 7294 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received);
7295 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); 7295 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent);
7296 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); 7296 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received);
7297 base::MessageLoop::current()->RunUntilIdle(); 7297 base::RunLoop().RunUntilIdle();
7298 7298
7299 // Read bytes 20-29 and 50-59 from the network, bytes 30-49 from the cache. 7299 // Read bytes 20-29 and 50-59 from the network, bytes 30-49 from the cache.
7300 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER; 7300 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER;
7301 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 "; 7301 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 ";
7302 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); 7302 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received);
7303 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes * 2, sent); 7303 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes * 2, sent);
7304 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes * 2, received); 7304 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes * 2, received);
7305 7305
7306 RemoveMockTransaction(&kRangeGET_TransactionOK); 7306 RemoveMockTransaction(&kRangeGET_TransactionOK);
7307 } 7307 }
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
7601 MockHttpRequest request(mock_transaction); 7601 MockHttpRequest request(mock_transaction);
7602 7602
7603 std::unique_ptr<Context> first(new Context); 7603 std::unique_ptr<Context> first(new Context);
7604 first->result = cache.CreateTransaction(&first->trans); 7604 first->result = cache.CreateTransaction(&first->trans);
7605 ASSERT_EQ(OK, first->result); 7605 ASSERT_EQ(OK, first->result);
7606 EXPECT_EQ(LOAD_STATE_IDLE, first->trans->GetLoadState()); 7606 EXPECT_EQ(LOAD_STATE_IDLE, first->trans->GetLoadState());
7607 first->result = 7607 first->result =
7608 first->trans->Start(&request, first->callback.callback(), BoundNetLog()); 7608 first->trans->Start(&request, first->callback.callback(), BoundNetLog());
7609 EXPECT_EQ(LOAD_STATE_WAITING_FOR_CACHE, first->trans->GetLoadState()); 7609 EXPECT_EQ(LOAD_STATE_WAITING_FOR_CACHE, first->trans->GetLoadState());
7610 7610
7611 base::MessageLoop::current()->RunUntilIdle(); 7611 base::RunLoop().RunUntilIdle();
7612 EXPECT_EQ(LOAD_STATE_IDLE, first->trans->GetLoadState()); 7612 EXPECT_EQ(LOAD_STATE_IDLE, first->trans->GetLoadState());
7613 ASSERT_TRUE(first->trans->GetResponseInfo()); 7613 ASSERT_TRUE(first->trans->GetResponseInfo());
7614 EXPECT_TRUE(first->trans->GetResponseInfo()->headers->HasHeaderValue( 7614 EXPECT_TRUE(first->trans->GetResponseInfo()->headers->HasHeaderValue(
7615 "Cache-Control", "no-store")); 7615 "Cache-Control", "no-store"));
7616 // Here we have read the response header but not read the response body yet. 7616 // Here we have read the response header but not read the response body yet.
7617 7617
7618 // Let us create the second (read) transaction. 7618 // Let us create the second (read) transaction.
7619 std::unique_ptr<Context> second(new Context); 7619 std::unique_ptr<Context> second(new Context);
7620 second->result = cache.CreateTransaction(&second->trans); 7620 second->result = cache.CreateTransaction(&second->trans);
7621 ASSERT_EQ(OK, second->result); 7621 ASSERT_EQ(OK, second->result);
7622 EXPECT_EQ(LOAD_STATE_IDLE, second->trans->GetLoadState()); 7622 EXPECT_EQ(LOAD_STATE_IDLE, second->trans->GetLoadState());
7623 second->result = second->trans->Start(&request, second->callback.callback(), 7623 second->result = second->trans->Start(&request, second->callback.callback(),
7624 BoundNetLog()); 7624 BoundNetLog());
7625 7625
7626 // Here the second transaction proceeds without reading the first body. 7626 // Here the second transaction proceeds without reading the first body.
7627 EXPECT_EQ(LOAD_STATE_WAITING_FOR_CACHE, second->trans->GetLoadState()); 7627 EXPECT_EQ(LOAD_STATE_WAITING_FOR_CACHE, second->trans->GetLoadState());
7628 base::MessageLoop::current()->RunUntilIdle(); 7628 base::RunLoop().RunUntilIdle();
7629 EXPECT_EQ(LOAD_STATE_IDLE, second->trans->GetLoadState()); 7629 EXPECT_EQ(LOAD_STATE_IDLE, second->trans->GetLoadState());
7630 ASSERT_TRUE(second->trans->GetResponseInfo()); 7630 ASSERT_TRUE(second->trans->GetResponseInfo());
7631 EXPECT_TRUE(second->trans->GetResponseInfo()->headers->HasHeaderValue( 7631 EXPECT_TRUE(second->trans->GetResponseInfo()->headers->HasHeaderValue(
7632 "Cache-Control", "no-store")); 7632 "Cache-Control", "no-store"));
7633 ReadAndVerifyTransaction(second->trans.get(), kSimpleGET_Transaction); 7633 ReadAndVerifyTransaction(second->trans.get(), kSimpleGET_Transaction);
7634 } 7634 }
7635 7635
7636 // Tests that serving a response entirely from cache replays the previous 7636 // Tests that serving a response entirely from cache replays the previous
7637 // SSLInfo. 7637 // SSLInfo.
7638 TEST(HttpCache, CachePreservesSSLInfo) { 7638 TEST(HttpCache, CachePreservesSSLInfo) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
7735 EXPECT_EQ(1, cache.disk_cache()->open_count()); 7735 EXPECT_EQ(1, cache.disk_cache()->open_count());
7736 EXPECT_EQ(1, cache.disk_cache()->create_count()); 7736 EXPECT_EQ(1, cache.disk_cache()->create_count());
7737 EXPECT_TRUE(response_info.was_cached); 7737 EXPECT_TRUE(response_info.was_cached);
7738 7738
7739 // The new SSL state is reported. 7739 // The new SSL state is reported.
7740 EXPECT_EQ(status2, response_info.ssl_info.connection_status); 7740 EXPECT_EQ(status2, response_info.ssl_info.connection_status);
7741 EXPECT_TRUE(cert2->Equals(response_info.ssl_info.cert.get())); 7741 EXPECT_TRUE(cert2->Equals(response_info.ssl_info.cert.get()));
7742 } 7742 }
7743 7743
7744 } // namespace net 7744 } // namespace net
OLDNEW
« no previous file with comments | « net/http/disk_cache_based_quic_server_info_unittest.cc ('k') | net/http/http_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698