| Index: net/http/http_cache_unittest.cc
|
| ===================================================================
|
| --- net/http/http_cache_unittest.cc (revision 30754)
|
| +++ net/http/http_cache_unittest.cc (working copy)
|
| @@ -578,6 +578,10 @@
|
| bool RangeTransactionServer::not_modified_ = false;
|
| bool RangeTransactionServer::modified_ = false;
|
|
|
| +// A dummy extra header that must be preserved on a given request.
|
| +// TODO(rvargas): Add tests using this without byte ranges.
|
| +#define EXTRA_HEADER "Extra: header\r\n"
|
| +
|
| // Static.
|
| void RangeTransactionServer::RangeHandler(const net::HttpRequestInfo* request,
|
| std::string* response_status,
|
| @@ -588,6 +592,12 @@
|
| return;
|
| }
|
|
|
| + // We want to make sure we don't delete extra headers.
|
| + if (request->extra_headers.find(EXTRA_HEADER) == std::string::npos) {
|
| + response_status->assign("HTTP/1.1 403 Forbidden");
|
| + return;
|
| + }
|
| +
|
| if (not_modified_) {
|
| response_status->assign("HTTP/1.1 304 Not Modified");
|
| return;
|
| @@ -640,7 +650,8 @@
|
| "http://www.google.com/range",
|
| "GET",
|
| base::Time(),
|
| - "Range: bytes = 40-49\r\n",
|
| + "Range: bytes = 40-49\r\n"
|
| + EXTRA_HEADER,
|
| net::LOAD_NORMAL,
|
| "HTTP/1.1 206 Partial Content",
|
| "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n"
|
| @@ -2016,6 +2027,7 @@
|
|
|
| MockTransaction transaction(kRangeGET_Transaction);
|
| transaction.request_headers = "If-None-Match: foo\n"
|
| + EXTRA_HEADER
|
| "Range: bytes = 40-49\n";
|
| RunTransactionTest(cache.http_cache(), transaction);
|
|
|
| @@ -2025,6 +2037,7 @@
|
|
|
| transaction.request_headers =
|
| "If-Modified-Since: Wed, 28 Nov 2007 00:45:20 GMT\n"
|
| + EXTRA_HEADER
|
| "Range: bytes = 40-49\n";
|
| RunTransactionTest(cache.http_cache(), transaction);
|
|
|
| @@ -2033,6 +2046,7 @@
|
| EXPECT_EQ(0, cache.disk_cache()->create_count());
|
|
|
| transaction.request_headers = "If-Range: bla\n"
|
| + EXTRA_HEADER
|
| "Range: bytes = 40-49\n";
|
| RunTransactionTest(cache.http_cache(), transaction);
|
|
|
| @@ -2049,7 +2063,7 @@
|
| // Write to the cache.
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| AddMockTransaction(&transaction);
|
| - transaction.request_headers = "";
|
| + transaction.request_headers = EXTRA_HEADER;
|
| transaction.handler = NULL;
|
| RunTransactionTest(cache.http_cache(), transaction);
|
|
|
| @@ -2097,7 +2111,7 @@
|
|
|
| // Write to the cache (30-39).
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "Range: bytes = 30-39\r\n";
|
| + transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 30-39 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2110,7 +2124,7 @@
|
| MessageLoop::current()->RunAllPending();
|
|
|
| // Write and read from the cache (20-59).
|
| - transaction.request_headers = "Range: bytes = 20-59\r\n";
|
| + transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2198,7 +2212,7 @@
|
|
|
| // Write to the cache (70-79).
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "Range: bytes = -10\r\n";
|
| + transaction.request_headers = "Range: bytes = -10\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2211,7 +2225,7 @@
|
| MessageLoop::current()->RunAllPending();
|
|
|
| // Write and read from the cache (60-79).
|
| - transaction.request_headers = "Range: bytes = 60-\r\n";
|
| + transaction.request_headers = "Range: bytes = 60-\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 60-69 rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2238,7 +2252,7 @@
|
| AddMockTransaction(&transaction);
|
|
|
| // Write to the cache (70-79).
|
| - transaction.request_headers = "Range: bytes = 70-\r\n";
|
| + transaction.request_headers = "Range: bytes = 70-\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2251,7 +2265,7 @@
|
| MessageLoop::current()->RunAllPending();
|
|
|
| // Write and read from the cache (60-79).
|
| - transaction.request_headers = "Range: bytes = -20\r\n";
|
| + transaction.request_headers = "Range: bytes = -20\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 60-69 rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2277,7 +2291,7 @@
|
| handler.set_not_modified(true);
|
|
|
| // Ask for the end of the file, without knowing the length.
|
| - transaction.request_headers = "Range: bytes = 70-\r\n";
|
| + transaction.request_headers = "Range: bytes = 70-\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2311,7 +2325,7 @@
|
|
|
| // Write and read from the cache (0-79), when not asked for a range.
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "";
|
| + transaction.request_headers = EXTRA_HEADER;
|
| transaction.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 "
|
| "rg: 50-59 rg: 60-69 rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
| @@ -2331,7 +2345,7 @@
|
| cache.http_cache()->set_enable_range_support(true);
|
|
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "Range: bytes = 0-9\r\n";
|
| + transaction.request_headers = "Range: bytes = 0-9\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 00-09 ";
|
| AddMockTransaction(&transaction);
|
| std::string headers;
|
| @@ -2346,7 +2360,7 @@
|
|
|
| // Read from the cache (0-9), write and read from cache (10 - 79),
|
| MockTransaction transaction2(kRangeGET_TransactionOK);
|
| - transaction2.request_headers = "Foo: bar\r\n";
|
| + transaction2.request_headers = "Foo: bar\r\n" EXTRA_HEADER;
|
| transaction2.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 "
|
| "rg: 50-59 rg: 60-69 rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers);
|
| @@ -2501,7 +2515,7 @@
|
|
|
| // Write to the cache (70-79).
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "Range: bytes = -10\r\n";
|
| + transaction.request_headers = "Range: bytes = -10\r\n" EXTRA_HEADER;
|
| transaction.data = "rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| @@ -2551,7 +2565,7 @@
|
|
|
| // A weird request should not delete this entry. Ask for bytes 120-.
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "Range: bytes = 120-\r\n";
|
| + transaction.request_headers = "Range: bytes = 120-\r\n" EXTRA_HEADER;
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|
| EXPECT_EQ(0U, headers.find("HTTP/1.1 416 "));
|
| @@ -2717,7 +2731,7 @@
|
|
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| transaction.handler = NULL;
|
| - transaction.request_headers = "Range: bytes = 50-59\r\n";
|
| + transaction.request_headers = "Range: bytes = 50-59\r\n" EXTRA_HEADER;
|
| std::string response_headers(transaction.response_headers);
|
| response_headers.append("Content-Range: bytes 50-59/160\n");
|
| transaction.response_headers = response_headers.c_str();
|
| @@ -2764,7 +2778,8 @@
|
|
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| transaction.handler = NULL;
|
| - transaction.request_headers = "Range: bytes = 4294967288-4294967297\r\n";
|
| + transaction.request_headers = "Range: bytes = 4294967288-4294967297\r\n"
|
| + EXTRA_HEADER;
|
| transaction.response_headers =
|
| "Content-Range: bytes 4294967288-4294967297/4294967299\n"
|
| "Content-Length: 10\n";
|
| @@ -2968,7 +2983,7 @@
|
| // Now make a regular request.
|
| std::string headers;
|
| MockTransaction transaction(kRangeGET_TransactionOK);
|
| - transaction.request_headers = "";
|
| + transaction.request_headers = EXTRA_HEADER;
|
| transaction.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 "
|
| "rg: 50-59 rg: 60-69 rg: 70-79 ";
|
| RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
|
|
|