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

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

Issue 8569005: HTTP Cache: Implement StopCaching(), to avoid caching (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « net/http/http_cache_transaction.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/bind.h" 7 #include "base/bind.h"
8 #include "base/hash_tables.h" 8 #include "base/hash_tables.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 5121 matching lines...) Expand 10 before | Expand all | Expand 10 after
5132 MessageLoop::current()->RunAllPending(); 5132 MessageLoop::current()->RunAllPending();
5133 5133
5134 // Read from the cache. 5134 // Read from the cache.
5135 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 5135 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
5136 5136
5137 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 5137 EXPECT_EQ(1, cache.network_layer()->transaction_count());
5138 EXPECT_EQ(1, cache.disk_cache()->open_count()); 5138 EXPECT_EQ(1, cache.disk_cache()->open_count());
5139 EXPECT_EQ(1, cache.disk_cache()->create_count()); 5139 EXPECT_EQ(1, cache.disk_cache()->create_count());
5140 } 5140 }
5141 5141
5142 // Tests that we stop cachining when told.
5143 TEST(HttpCache, StopCachingDeletesEntry) {
5144 MockHttpCache cache;
5145 TestOldCompletionCallback callback;
5146 MockHttpRequest request(kSimpleGET_Transaction);
5147
5148 {
5149 scoped_ptr<net::HttpTransaction> trans;
5150 int rv = cache.http_cache()->CreateTransaction(&trans);
5151 EXPECT_EQ(net::OK, rv);
5152
5153 rv = trans->Start(&request, &callback, net::BoundNetLog());
5154 EXPECT_EQ(net::OK, callback.GetResult(rv));
5155
5156 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256));
5157 rv = trans->Read(buf, 10, &callback);
5158 EXPECT_EQ(callback.GetResult(rv), 10);
5159
5160 trans->StopCaching();
5161
5162 // We should be able to keep reading.
5163 rv = trans->Read(buf, 256, &callback);
5164 EXPECT_GT(callback.GetResult(rv), 0);
5165 rv = trans->Read(buf, 256, &callback);
5166 EXPECT_EQ(callback.GetResult(rv), 0);
5167 }
5168
5169 // Make sure that the ActiveEntry is gone.
5170 MessageLoop::current()->RunAllPending();
5171
5172 // Verify that the entry is gone.
5173 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
5174
5175 EXPECT_EQ(2, cache.network_layer()->transaction_count());
5176 EXPECT_EQ(0, cache.disk_cache()->open_count());
5177 EXPECT_EQ(2, cache.disk_cache()->create_count());
5178 }
5179
5180 // Tests that when we are told to stop caching we don't throw away valid data.
5181 TEST(HttpCache, StopCachingSavesEntry) {
5182 MockHttpCache cache;
5183 TestOldCompletionCallback callback;
5184 MockHttpRequest request(kSimpleGET_Transaction);
5185
5186 {
5187 scoped_ptr<net::HttpTransaction> trans;
5188 int rv = cache.http_cache()->CreateTransaction(&trans);
5189 EXPECT_EQ(net::OK, rv);
5190
5191 // Force a response that can be resumed.
5192 MockTransaction mock_transaction(kSimpleGET_Transaction);
5193 AddMockTransaction(&mock_transaction);
5194 mock_transaction.response_headers = "Cache-Control: max-age=10000\n"
5195 "Content-Length: 42\n"
5196 "Etag: foo\n";
5197
5198 rv = trans->Start(&request, &callback, net::BoundNetLog());
5199 EXPECT_EQ(net::OK, callback.GetResult(rv));
5200
5201 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256));
5202 rv = trans->Read(buf, 10, &callback);
5203 EXPECT_EQ(callback.GetResult(rv), 10);
5204
5205 trans->StopCaching();
5206
5207 // We should be able to keep reading.
5208 rv = trans->Read(buf, 256, &callback);
5209 EXPECT_GT(callback.GetResult(rv), 0);
5210 rv = trans->Read(buf, 256, &callback);
5211 EXPECT_EQ(callback.GetResult(rv), 0);
5212
5213 RemoveMockTransaction(&mock_transaction);
5214 }
5215
5216 // Verify that the entry is marked as incomplete.
5217 disk_cache::Entry* entry;
5218 ASSERT_TRUE(cache.OpenBackendEntry(kSimpleGET_Transaction.url, &entry));
5219 net::HttpResponseInfo response;
5220 bool truncated = false;
5221 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated));
5222 EXPECT_TRUE(truncated);
5223 entry->Close();
5224 }
5225
5142 // Tests that we detect truncated rersources from the net when there is 5226 // Tests that we detect truncated rersources from the net when there is
5143 // a Content-Length header. 5227 // a Content-Length header.
5144 TEST(HttpCache, TruncatedByContentLength) { 5228 TEST(HttpCache, TruncatedByContentLength) {
5145 MockHttpCache cache; 5229 MockHttpCache cache;
5146 TestOldCompletionCallback callback; 5230 TestOldCompletionCallback callback;
5147 5231
5148 MockTransaction transaction(kSimpleGET_Transaction); 5232 MockTransaction transaction(kSimpleGET_Transaction);
5149 AddMockTransaction(&transaction); 5233 AddMockTransaction(&transaction);
5150 transaction.response_headers = "Cache-Control: max-age=10000\n" 5234 transaction.response_headers = "Cache-Control: max-age=10000\n"
5151 "Content-Length: 100\n"; 5235 "Content-Length: 100\n";
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
5214 new net::DiskCacheBasedSSLHostInfo("https://www.verisign.com", ssl_config, 5298 new net::DiskCacheBasedSSLHostInfo("https://www.verisign.com", ssl_config,
5215 &cert_verifier, cache.http_cache()); 5299 &cert_verifier, cache.http_cache());
5216 ssl_host_info->Start(); 5300 ssl_host_info->Start();
5217 DeleteSSLHostInfoOldCompletionCallback callback(ssl_host_info); 5301 DeleteSSLHostInfoOldCompletionCallback callback(ssl_host_info);
5218 int rv = ssl_host_info->WaitForDataReady(&callback); 5302 int rv = ssl_host_info->WaitForDataReady(&callback);
5219 EXPECT_EQ(net::ERR_IO_PENDING, rv); 5303 EXPECT_EQ(net::ERR_IO_PENDING, rv);
5220 // Now complete the backend creation and let the callback run. 5304 // Now complete the backend creation and let the callback run.
5221 factory->FinishCreation(); 5305 factory->FinishCreation();
5222 EXPECT_EQ(net::OK, callback.GetResult(rv)); 5306 EXPECT_EQ(net::OK, callback.GetResult(rv));
5223 } 5307 }
OLDNEW
« no previous file with comments | « net/http/http_cache_transaction.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698