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 "net/http/http_cache.h" | 5 #include "net/http/http_cache.h" |
6 | 6 |
7 #include "base/hash_tables.h" | 7 #include "base/hash_tables.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/scoped_vector.h" | 9 #include "base/scoped_vector.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
11 #include "net/base/cache_type.h" | 11 #include "net/base/cache_type.h" |
12 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
13 #include "net/base/load_flags.h" | 13 #include "net/base/load_flags.h" |
14 #include "net/base/load_log_unittest.h" | 14 #include "net/base/net_log_unittest.h" |
15 #include "net/base/ssl_cert_request_info.h" | 15 #include "net/base/ssl_cert_request_info.h" |
16 #include "net/disk_cache/disk_cache.h" | 16 #include "net/disk_cache/disk_cache.h" |
17 #include "net/http/http_byte_range.h" | 17 #include "net/http/http_byte_range.h" |
18 #include "net/http/http_request_info.h" | 18 #include "net/http/http_request_info.h" |
19 #include "net/http/http_response_headers.h" | 19 #include "net/http/http_response_headers.h" |
20 #include "net/http/http_response_info.h" | 20 #include "net/http/http_response_info.h" |
21 #include "net/http/http_transaction.h" | 21 #include "net/http/http_transaction.h" |
22 #include "net/http/http_transaction_unittest.h" | 22 #include "net/http/http_transaction_unittest.h" |
23 #include "net/http/http_util.h" | 23 #include "net/http/http_util.h" |
24 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 | 578 |
579 EXPECT_EQ(net::OK, rv); | 579 EXPECT_EQ(net::OK, rv); |
580 std::string expected(trans_info.data); | 580 std::string expected(trans_info.data); |
581 EXPECT_EQ(expected, content); | 581 EXPECT_EQ(expected, content); |
582 } | 582 } |
583 | 583 |
584 void RunTransactionTestWithRequestAndLog(net::HttpCache* cache, | 584 void RunTransactionTestWithRequestAndLog(net::HttpCache* cache, |
585 const MockTransaction& trans_info, | 585 const MockTransaction& trans_info, |
586 const MockHttpRequest& request, | 586 const MockHttpRequest& request, |
587 net::HttpResponseInfo* response_info, | 587 net::HttpResponseInfo* response_info, |
588 net::LoadLog* load_log) { | 588 const net::BoundNetLog& net_log) { |
589 TestCompletionCallback callback; | 589 TestCompletionCallback callback; |
590 | 590 |
591 // write to the cache | 591 // write to the cache |
592 | 592 |
593 scoped_ptr<net::HttpTransaction> trans; | 593 scoped_ptr<net::HttpTransaction> trans; |
594 int rv = cache->CreateTransaction(&trans); | 594 int rv = cache->CreateTransaction(&trans); |
595 EXPECT_EQ(net::OK, rv); | 595 EXPECT_EQ(net::OK, rv); |
596 ASSERT_TRUE(trans.get()); | 596 ASSERT_TRUE(trans.get()); |
597 | 597 |
598 rv = trans->Start(&request, &callback, load_log); | 598 rv = trans->Start(&request, &callback, net_log); |
599 if (rv == net::ERR_IO_PENDING) | 599 if (rv == net::ERR_IO_PENDING) |
600 rv = callback.WaitForResult(); | 600 rv = callback.WaitForResult(); |
601 ASSERT_EQ(net::OK, rv); | 601 ASSERT_EQ(net::OK, rv); |
602 | 602 |
603 const net::HttpResponseInfo* response = trans->GetResponseInfo(); | 603 const net::HttpResponseInfo* response = trans->GetResponseInfo(); |
604 ASSERT_TRUE(response); | 604 ASSERT_TRUE(response); |
605 | 605 |
606 if (response_info) | 606 if (response_info) |
607 *response_info = *response; | 607 *response_info = *response; |
608 | 608 |
609 ReadAndVerifyTransaction(trans.get(), trans_info); | 609 ReadAndVerifyTransaction(trans.get(), trans_info); |
610 } | 610 } |
611 | 611 |
612 void RunTransactionTestWithRequest(net::HttpCache* cache, | 612 void RunTransactionTestWithRequest(net::HttpCache* cache, |
613 const MockTransaction& trans_info, | 613 const MockTransaction& trans_info, |
614 const MockHttpRequest& request, | 614 const MockHttpRequest& request, |
615 net::HttpResponseInfo* response_info) { | 615 net::HttpResponseInfo* response_info) { |
616 RunTransactionTestWithRequestAndLog(cache, trans_info, request, | 616 RunTransactionTestWithRequestAndLog(cache, trans_info, request, |
617 response_info, NULL); | 617 response_info, NULL); |
618 } | 618 } |
619 | 619 |
620 void RunTransactionTestWithLog(net::HttpCache* cache, | 620 void RunTransactionTestWithLog(net::HttpCache* cache, |
621 const MockTransaction& trans_info, | 621 const MockTransaction& trans_info, |
622 net::LoadLog* log) { | 622 const net::BoundNetLog& log) { |
623 RunTransactionTestWithRequestAndLog( | 623 RunTransactionTestWithRequestAndLog( |
624 cache, trans_info, MockHttpRequest(trans_info), NULL, log); | 624 cache, trans_info, MockHttpRequest(trans_info), NULL, log); |
625 } | 625 } |
626 | 626 |
627 void RunTransactionTest(net::HttpCache* cache, | 627 void RunTransactionTest(net::HttpCache* cache, |
628 const MockTransaction& trans_info) { | 628 const MockTransaction& trans_info) { |
629 RunTransactionTestWithLog(cache, trans_info, NULL); | 629 RunTransactionTestWithLog(cache, trans_info, NULL); |
630 } | 630 } |
631 | 631 |
632 void RunTransactionTestWithResponseInfo(net::HttpCache* cache, | 632 void RunTransactionTestWithResponseInfo(net::HttpCache* cache, |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
906 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 906 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
907 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 907 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
908 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 908 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
909 } | 909 } |
910 | 910 |
911 TEST(HttpCache, SimpleGETNoDiskCache) { | 911 TEST(HttpCache, SimpleGETNoDiskCache) { |
912 MockHttpCache cache; | 912 MockHttpCache cache; |
913 | 913 |
914 cache.disk_cache()->set_fail_requests(); | 914 cache.disk_cache()->set_fail_requests(); |
915 | 915 |
916 scoped_refptr<net::LoadLog> log(new net::LoadLog(net::LoadLog::kUnbounded)); | 916 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); |
917 | 917 |
918 // Read from the network, and don't use the cache. | 918 // Read from the network, and don't use the cache. |
919 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction, log); | 919 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction, |
| 920 log.bound()); |
920 | 921 |
921 // Check that the LoadLog was filled as expected. | 922 // Check that the NetLog was filled as expected. |
922 // (We attempted to both Open and Create entries, but both failed). | 923 // (We attempted to both Open and Create entries, but both failed). |
923 EXPECT_EQ(4u, log->entries().size()); | 924 EXPECT_EQ(4u, log.entries().size()); |
924 EXPECT_TRUE(net::LogContainsBeginEvent( | 925 EXPECT_TRUE(net::LogContainsBeginEvent( |
925 *log, 0, net::LoadLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); | 926 log.entries(), 0, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); |
926 EXPECT_TRUE(net::LogContainsEndEvent( | 927 EXPECT_TRUE(net::LogContainsEndEvent( |
927 *log, 1, net::LoadLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); | 928 log.entries(), 1, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); |
928 EXPECT_TRUE(net::LogContainsBeginEvent( | 929 EXPECT_TRUE(net::LogContainsBeginEvent( |
929 *log, 2, net::LoadLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); | 930 log.entries(), 2, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); |
930 EXPECT_TRUE(net::LogContainsEndEvent( | 931 EXPECT_TRUE(net::LogContainsEndEvent( |
931 *log, 3, net::LoadLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); | 932 log.entries(), 3, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); |
932 | 933 |
933 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 934 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
934 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 935 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
935 EXPECT_EQ(0, cache.disk_cache()->create_count()); | 936 EXPECT_EQ(0, cache.disk_cache()->create_count()); |
936 } | 937 } |
937 | 938 |
938 TEST(HttpCache, SimpleGETWithDiskFailures) { | 939 TEST(HttpCache, SimpleGETWithDiskFailures) { |
939 MockHttpCache cache; | 940 MockHttpCache cache; |
940 | 941 |
941 cache.disk_cache()->set_soft_failures(true); | 942 cache.disk_cache()->set_soft_failures(true); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
990 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); | 991 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); |
991 | 992 |
992 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 993 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
993 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 994 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
994 EXPECT_EQ(2, cache.disk_cache()->create_count()); | 995 EXPECT_EQ(2, cache.disk_cache()->create_count()); |
995 } | 996 } |
996 | 997 |
997 TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit) { | 998 TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit) { |
998 MockHttpCache cache; | 999 MockHttpCache cache; |
999 | 1000 |
1000 scoped_refptr<net::LoadLog> log(new net::LoadLog(net::LoadLog::kUnbounded)); | 1001 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); |
1001 | 1002 |
1002 // write to the cache | 1003 // write to the cache |
1003 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction, log); | 1004 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction, |
| 1005 log.bound()); |
1004 | 1006 |
1005 // Check that the LoadLog was filled as expected. | 1007 // Check that the NetLog was filled as expected. |
1006 EXPECT_EQ(6u, log->entries().size()); | 1008 EXPECT_EQ(6u, log.entries().size()); |
1007 EXPECT_TRUE(net::LogContainsBeginEvent( | 1009 EXPECT_TRUE(net::LogContainsBeginEvent( |
1008 *log, 0, net::LoadLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); | 1010 log.entries(), 0, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); |
1009 EXPECT_TRUE(net::LogContainsEndEvent( | 1011 EXPECT_TRUE(net::LogContainsEndEvent( |
1010 *log, 1, net::LoadLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); | 1012 log.entries(), 1, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); |
1011 EXPECT_TRUE(net::LogContainsBeginEvent( | 1013 EXPECT_TRUE(net::LogContainsBeginEvent( |
1012 *log, 2, net::LoadLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); | 1014 log.entries(), 2, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); |
1013 EXPECT_TRUE(net::LogContainsEndEvent( | 1015 EXPECT_TRUE(net::LogContainsEndEvent( |
1014 *log, 3, net::LoadLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); | 1016 log.entries(), 3, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); |
1015 EXPECT_TRUE(net::LogContainsBeginEvent( | 1017 EXPECT_TRUE(net::LogContainsBeginEvent( |
1016 *log, 4, net::LoadLog::TYPE_HTTP_CACHE_WAITING)); | 1018 log.entries(), 4, net::NetLog::TYPE_HTTP_CACHE_WAITING)); |
1017 EXPECT_TRUE(net::LogContainsEndEvent( | 1019 EXPECT_TRUE(net::LogContainsEndEvent( |
1018 *log, 5, net::LoadLog::TYPE_HTTP_CACHE_WAITING)); | 1020 log.entries(), 5, net::NetLog::TYPE_HTTP_CACHE_WAITING)); |
1019 | 1021 |
1020 // force this transaction to read from the cache | 1022 // force this transaction to read from the cache |
1021 MockTransaction transaction(kSimpleGET_Transaction); | 1023 MockTransaction transaction(kSimpleGET_Transaction); |
1022 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; | 1024 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; |
1023 | 1025 |
1024 log = new net::LoadLog(net::LoadLog::kUnbounded); | 1026 log.Clear(); |
1025 | 1027 |
1026 RunTransactionTestWithLog(cache.http_cache(), transaction, log); | 1028 RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound()); |
1027 | 1029 |
1028 // Check that the LoadLog was filled as expected. | 1030 // Check that the NetLog was filled as expected. |
1029 EXPECT_EQ(6u, log->entries().size()); | 1031 EXPECT_EQ(6u, log.entries().size()); |
1030 EXPECT_TRUE(net::LogContainsBeginEvent( | 1032 EXPECT_TRUE(net::LogContainsBeginEvent( |
1031 *log, 0, net::LoadLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); | 1033 log.entries(), 0, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); |
1032 EXPECT_TRUE(net::LogContainsEndEvent( | 1034 EXPECT_TRUE(net::LogContainsEndEvent( |
1033 *log, 1, net::LoadLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); | 1035 log.entries(), 1, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); |
1034 EXPECT_TRUE(net::LogContainsBeginEvent( | 1036 EXPECT_TRUE(net::LogContainsBeginEvent( |
1035 *log, 2, net::LoadLog::TYPE_HTTP_CACHE_WAITING)); | 1037 log.entries(), 2, net::NetLog::TYPE_HTTP_CACHE_WAITING)); |
1036 EXPECT_TRUE(net::LogContainsEndEvent( | 1038 EXPECT_TRUE(net::LogContainsEndEvent( |
1037 *log, 3, net::LoadLog::TYPE_HTTP_CACHE_WAITING)); | 1039 log.entries(), 3, net::NetLog::TYPE_HTTP_CACHE_WAITING)); |
1038 EXPECT_TRUE(net::LogContainsBeginEvent( | 1040 EXPECT_TRUE(net::LogContainsBeginEvent( |
1039 *log, 4, net::LoadLog::TYPE_HTTP_CACHE_READ_INFO)); | 1041 log.entries(), 4, net::NetLog::TYPE_HTTP_CACHE_READ_INFO)); |
1040 EXPECT_TRUE(net::LogContainsEndEvent( | 1042 EXPECT_TRUE(net::LogContainsEndEvent( |
1041 *log, 5, net::LoadLog::TYPE_HTTP_CACHE_READ_INFO)); | 1043 log.entries(), 5, net::NetLog::TYPE_HTTP_CACHE_READ_INFO)); |
1042 | 1044 |
1043 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 1045 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
1044 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 1046 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
1045 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 1047 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
1046 } | 1048 } |
1047 | 1049 |
1048 TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Miss) { | 1050 TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Miss) { |
1049 MockHttpCache cache; | 1051 MockHttpCache cache; |
1050 | 1052 |
1051 // force this transaction to read from the cache | 1053 // force this transaction to read from the cache |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 TEST(HttpCache, SimpleGET_LoadBypassCache) { | 1108 TEST(HttpCache, SimpleGET_LoadBypassCache) { |
1107 MockHttpCache cache; | 1109 MockHttpCache cache; |
1108 | 1110 |
1109 // Write to the cache. | 1111 // Write to the cache. |
1110 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); | 1112 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); |
1111 | 1113 |
1112 // Force this transaction to write to the cache again. | 1114 // Force this transaction to write to the cache again. |
1113 MockTransaction transaction(kSimpleGET_Transaction); | 1115 MockTransaction transaction(kSimpleGET_Transaction); |
1114 transaction.load_flags |= net::LOAD_BYPASS_CACHE; | 1116 transaction.load_flags |= net::LOAD_BYPASS_CACHE; |
1115 | 1117 |
1116 scoped_refptr<net::LoadLog> log(new net::LoadLog(net::LoadLog::kUnbounded)); | 1118 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); |
1117 | 1119 |
1118 RunTransactionTestWithLog(cache.http_cache(), transaction, log); | 1120 RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound()); |
1119 | 1121 |
1120 // Check that the LoadLog was filled as expected. | 1122 // Check that the NetLog was filled as expected. |
1121 EXPECT_EQ(6u, log->entries().size()); | 1123 EXPECT_EQ(6u, log.entries().size()); |
1122 EXPECT_TRUE(net::LogContainsBeginEvent( | 1124 EXPECT_TRUE(net::LogContainsBeginEvent( |
1123 *log, 0, net::LoadLog::TYPE_HTTP_CACHE_DOOM_ENTRY)); | 1125 log.entries(), 0, net::NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY)); |
1124 EXPECT_TRUE(net::LogContainsEndEvent( | 1126 EXPECT_TRUE(net::LogContainsEndEvent( |
1125 *log, 1, net::LoadLog::TYPE_HTTP_CACHE_DOOM_ENTRY)); | 1127 log.entries(), 1, net::NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY)); |
1126 EXPECT_TRUE(net::LogContainsBeginEvent( | 1128 EXPECT_TRUE(net::LogContainsBeginEvent( |
1127 *log, 2, net::LoadLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); | 1129 log.entries(), 2, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); |
1128 EXPECT_TRUE(net::LogContainsEndEvent( | 1130 EXPECT_TRUE(net::LogContainsEndEvent( |
1129 *log, 3, net::LoadLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); | 1131 log.entries(), 3, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); |
1130 EXPECT_TRUE(net::LogContainsBeginEvent( | 1132 EXPECT_TRUE(net::LogContainsBeginEvent( |
1131 *log, 4, net::LoadLog::TYPE_HTTP_CACHE_WAITING)); | 1133 log.entries(), 4, net::NetLog::TYPE_HTTP_CACHE_WAITING)); |
1132 EXPECT_TRUE(net::LogContainsEndEvent( | 1134 EXPECT_TRUE(net::LogContainsEndEvent( |
1133 *log, 5, net::LoadLog::TYPE_HTTP_CACHE_WAITING)); | 1135 log.entries(), 5, net::NetLog::TYPE_HTTP_CACHE_WAITING)); |
1134 | 1136 |
1135 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 1137 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
1136 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 1138 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
1137 EXPECT_EQ(2, cache.disk_cache()->create_count()); | 1139 EXPECT_EQ(2, cache.disk_cache()->create_count()); |
1138 } | 1140 } |
1139 | 1141 |
1140 TEST(HttpCache, SimpleGET_LoadBypassCache_Implicit) { | 1142 TEST(HttpCache, SimpleGET_LoadBypassCache_Implicit) { |
1141 MockHttpCache cache; | 1143 MockHttpCache cache; |
1142 | 1144 |
1143 // write to the cache | 1145 // write to the cache |
(...skipping 3198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4342 // Now return 200 when validating the entry so the metadata will be lost. | 4344 // Now return 200 when validating the entry so the metadata will be lost. |
4343 MockTransaction trans2(kTypicalGET_Transaction); | 4345 MockTransaction trans2(kTypicalGET_Transaction); |
4344 trans2.load_flags = net::LOAD_VALIDATE_CACHE; | 4346 trans2.load_flags = net::LOAD_VALIDATE_CACHE; |
4345 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response); | 4347 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response); |
4346 EXPECT_TRUE(response.metadata.get() == NULL); | 4348 EXPECT_TRUE(response.metadata.get() == NULL); |
4347 | 4349 |
4348 EXPECT_EQ(3, cache.network_layer()->transaction_count()); | 4350 EXPECT_EQ(3, cache.network_layer()->transaction_count()); |
4349 EXPECT_EQ(4, cache.disk_cache()->open_count()); | 4351 EXPECT_EQ(4, cache.disk_cache()->open_count()); |
4350 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 4352 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
4351 } | 4353 } |
OLD | NEW |