| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/cache_storage/cache_storage_cache.h" | 5 #include "content/browser/cache_storage/cache_storage_cache.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 } | 221 } |
| 222 | 222 |
| 223 EXPECT_EQ(expected.response_time, actual.response_time); | 223 EXPECT_EQ(expected.response_time, actual.response_time); |
| 224 if (expected.response_time != actual.response_time) | 224 if (expected.response_time != actual.response_time) |
| 225 return false; | 225 return false; |
| 226 | 226 |
| 227 EXPECT_EQ(expected.cache_storage_cache_name, actual.cache_storage_cache_name); | 227 EXPECT_EQ(expected.cache_storage_cache_name, actual.cache_storage_cache_name); |
| 228 if (expected.cache_storage_cache_name != actual.cache_storage_cache_name) | 228 if (expected.cache_storage_cache_name != actual.cache_storage_cache_name) |
| 229 return false; | 229 return false; |
| 230 | 230 |
| 231 EXPECT_EQ(expected.cors_exposed_header_names, |
| 232 actual.cors_exposed_header_names); |
| 233 if (expected.cors_exposed_header_names != actual.cors_exposed_header_names) |
| 234 return false; |
| 235 |
| 231 return true; | 236 return true; |
| 232 } | 237 } |
| 233 | 238 |
| 234 bool ResponseBodiesEqual(const std::string& expected_body, | 239 bool ResponseBodiesEqual(const std::string& expected_body, |
| 235 const storage::BlobDataHandle& actual_body_handle) { | 240 const storage::BlobDataHandle& actual_body_handle) { |
| 236 std::string actual_body; | 241 std::string actual_body; |
| 237 CopyBody(actual_body_handle, &actual_body); | 242 CopyBody(actual_body_handle, &actual_body); |
| 238 return expected_body == actual_body; | 243 return expected_body == actual_body; |
| 239 } | 244 } |
| 240 | 245 |
| 241 bool ResponseSideDataEqual(const std::string& expected_side_data, | 246 bool ResponseSideDataEqual(const std::string& expected_side_data, |
| 242 const storage::BlobDataHandle& actual_body_handle) { | 247 const storage::BlobDataHandle& actual_body_handle) { |
| 243 std::string actual_body; | 248 std::string actual_body; |
| 244 CopySideData(actual_body_handle, &actual_body); | 249 CopySideData(actual_body_handle, &actual_body); |
| 245 return expected_side_data == actual_body; | 250 return expected_side_data == actual_body; |
| 246 } | 251 } |
| 247 | 252 |
| 248 ServiceWorkerResponse SetCacheName(const ServiceWorkerResponse& original) { | 253 ServiceWorkerResponse SetCacheName(const ServiceWorkerResponse& original) { |
| 249 return ServiceWorkerResponse( | 254 ServiceWorkerResponse result(original); |
| 250 original.url, original.status_code, original.status_text, | 255 result.is_in_cache_storage = true; |
| 251 original.response_type, original.headers, original.blob_uuid, | 256 result.cache_storage_cache_name = kCacheName; |
| 252 original.blob_size, original.stream_url, original.error, | 257 return result; |
| 253 original.response_time, true, kCacheName); | |
| 254 } | 258 } |
| 255 | 259 |
| 256 } // namespace | 260 } // namespace |
| 257 | 261 |
| 258 // A CacheStorageCache that can optionally delay during backend creation. | 262 // A CacheStorageCache that can optionally delay during backend creation. |
| 259 class TestCacheStorageCache : public CacheStorageCache { | 263 class TestCacheStorageCache : public CacheStorageCache { |
| 260 public: | 264 public: |
| 261 TestCacheStorageCache( | 265 TestCacheStorageCache( |
| 262 const GURL& origin, | 266 const GURL& origin, |
| 263 const std::string& cache_name, | 267 const std::string& cache_name, |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 | 385 |
| 382 blob_handle_ = | 386 blob_handle_ = |
| 383 blob_storage_context->context()->AddFinishedBlob(blob_data.get()); | 387 blob_storage_context->context()->AddFinishedBlob(blob_data.get()); |
| 384 | 388 |
| 385 body_response_ = ServiceWorkerResponse( | 389 body_response_ = ServiceWorkerResponse( |
| 386 GURL("http://example.com/body.html"), 200, "OK", | 390 GURL("http://example.com/body.html"), 200, "OK", |
| 387 blink::WebServiceWorkerResponseTypeDefault, headers, | 391 blink::WebServiceWorkerResponseTypeDefault, headers, |
| 388 blob_handle_->uuid(), expected_blob_data_.size(), GURL(), | 392 blob_handle_->uuid(), expected_blob_data_.size(), GURL(), |
| 389 blink::WebServiceWorkerResponseErrorUnknown, base::Time::Now(), | 393 blink::WebServiceWorkerResponseErrorUnknown, base::Time::Now(), |
| 390 false /* is_in_cache_storage */, | 394 false /* is_in_cache_storage */, |
| 391 std::string() /* cache_storage_cache_name */); | 395 std::string() /* cache_storage_cache_name */, |
| 396 ServiceWorkerHeaderList() /* cors_exposed_header_names */); |
| 392 | 397 |
| 393 body_response_with_query_ = ServiceWorkerResponse( | 398 body_response_with_query_ = ServiceWorkerResponse( |
| 394 GURL("http://example.com/body.html?query=test"), 200, "OK", | 399 GURL("http://example.com/body.html?query=test"), 200, "OK", |
| 395 blink::WebServiceWorkerResponseTypeDefault, headers, | 400 blink::WebServiceWorkerResponseTypeDefault, headers, |
| 396 blob_handle_->uuid(), expected_blob_data_.size(), GURL(), | 401 blob_handle_->uuid(), expected_blob_data_.size(), GURL(), |
| 397 blink::WebServiceWorkerResponseErrorUnknown, base::Time::Now(), | 402 blink::WebServiceWorkerResponseErrorUnknown, base::Time::Now(), |
| 398 false /* is_in_cache_storage */, | 403 false /* is_in_cache_storage */, |
| 399 std::string() /* cache_storage_cache_name */); | 404 std::string() /* cache_storage_cache_name */, |
| 405 {"a"} /* cors_exposed_header_names */); |
| 400 | 406 |
| 401 no_body_response_ = ServiceWorkerResponse( | 407 no_body_response_ = ServiceWorkerResponse( |
| 402 GURL("http://example.com/no_body.html"), 200, "OK", | 408 GURL("http://example.com/no_body.html"), 200, "OK", |
| 403 blink::WebServiceWorkerResponseTypeDefault, headers, "", 0, GURL(), | 409 blink::WebServiceWorkerResponseTypeDefault, headers, "", 0, GURL(), |
| 404 blink::WebServiceWorkerResponseErrorUnknown, base::Time::Now(), | 410 blink::WebServiceWorkerResponseErrorUnknown, base::Time::Now(), |
| 405 false /* is_in_cache_storage */, | 411 false /* is_in_cache_storage */, |
| 406 std::string() /* cache_storage_cache_name */); | 412 std::string() /* cache_storage_cache_name */, |
| 413 ServiceWorkerHeaderList() /* cors_exposed_header_names */); |
| 407 } | 414 } |
| 408 | 415 |
| 409 std::unique_ptr<ServiceWorkerFetchRequest> CopyFetchRequest( | 416 std::unique_ptr<ServiceWorkerFetchRequest> CopyFetchRequest( |
| 410 const ServiceWorkerFetchRequest& request) { | 417 const ServiceWorkerFetchRequest& request) { |
| 411 return base::WrapUnique(new ServiceWorkerFetchRequest( | 418 return base::WrapUnique(new ServiceWorkerFetchRequest( |
| 412 request.url, request.method, request.headers, request.referrer, | 419 request.url, request.method, request.headers, request.referrer, |
| 413 request.is_reload)); | 420 request.is_reload)); |
| 414 } | 421 } |
| 415 | 422 |
| 416 CacheStorageError BatchOperation( | 423 CacheStorageError BatchOperation( |
| (...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1217 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); | 1224 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
| 1218 memset(buffer->data(), 0, kSize); | 1225 memset(buffer->data(), 0, kSize); |
| 1219 EXPECT_FALSE(WriteSideData(GURL("http://www.example.com/not_exist"), | 1226 EXPECT_FALSE(WriteSideData(GURL("http://www.example.com/not_exist"), |
| 1220 base::Time::Now(), buffer, kSize)); | 1227 base::Time::Now(), buffer, kSize)); |
| 1221 EXPECT_EQ(CACHE_STORAGE_ERROR_NOT_FOUND, callback_error_); | 1228 EXPECT_EQ(CACHE_STORAGE_ERROR_NOT_FOUND, callback_error_); |
| 1222 } | 1229 } |
| 1223 | 1230 |
| 1224 TEST_F(CacheStorageCacheTest, CaselessServiceWorkerResponseHeaders) { | 1231 TEST_F(CacheStorageCacheTest, CaselessServiceWorkerResponseHeaders) { |
| 1225 // CacheStorageCache depends on ServiceWorkerResponse having caseless | 1232 // CacheStorageCache depends on ServiceWorkerResponse having caseless |
| 1226 // headers so that it can quickly lookup vary headers. | 1233 // headers so that it can quickly lookup vary headers. |
| 1227 ServiceWorkerResponse response(GURL("http://www.example.com"), 200, "OK", | 1234 ServiceWorkerResponse response( |
| 1228 blink::WebServiceWorkerResponseTypeDefault, | 1235 GURL("http://www.example.com"), 200, "OK", |
| 1229 ServiceWorkerHeaderMap(), "", 0, GURL(), | 1236 blink::WebServiceWorkerResponseTypeDefault, ServiceWorkerHeaderMap(), "", |
| 1230 blink::WebServiceWorkerResponseErrorUnknown, | 1237 0, GURL(), blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
| 1231 base::Time(), false /* is_in_cache_storage */, | 1238 false /* is_in_cache_storage */, |
| 1232 std::string() /* cache_storage_cache_name */); | 1239 std::string() /* cache_storage_cache_name */, |
| 1240 ServiceWorkerHeaderList() /* cors_exposed_header_names */); |
| 1233 response.headers["content-type"] = "foo"; | 1241 response.headers["content-type"] = "foo"; |
| 1234 response.headers["Content-Type"] = "bar"; | 1242 response.headers["Content-Type"] = "bar"; |
| 1235 EXPECT_EQ("bar", response.headers["content-type"]); | 1243 EXPECT_EQ("bar", response.headers["content-type"]); |
| 1236 } | 1244 } |
| 1237 | 1245 |
| 1238 TEST_F(CacheStorageCacheTest, CaselessServiceWorkerFetchRequestHeaders) { | 1246 TEST_F(CacheStorageCacheTest, CaselessServiceWorkerFetchRequestHeaders) { |
| 1239 // CacheStorageCache depends on ServiceWorkerFetchRequest having caseless | 1247 // CacheStorageCache depends on ServiceWorkerFetchRequest having caseless |
| 1240 // headers so that it can quickly lookup vary headers. | 1248 // headers so that it can quickly lookup vary headers. |
| 1241 ServiceWorkerFetchRequest request(GURL("http://www.example.com"), "GET", | 1249 ServiceWorkerFetchRequest request(GURL("http://www.example.com"), "GET", |
| 1242 ServiceWorkerHeaderMap(), Referrer(), | 1250 ServiceWorkerHeaderMap(), Referrer(), |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1399 EXPECT_EQ(1, sequence_out); | 1407 EXPECT_EQ(1, sequence_out); |
| 1400 close_loop2->Run(); | 1408 close_loop2->Run(); |
| 1401 EXPECT_EQ(2, sequence_out); | 1409 EXPECT_EQ(2, sequence_out); |
| 1402 } | 1410 } |
| 1403 | 1411 |
| 1404 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest, | 1412 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest, |
| 1405 CacheStorageCacheTestP, | 1413 CacheStorageCacheTestP, |
| 1406 ::testing::Values(false, true)); | 1414 ::testing::Values(false, true)); |
| 1407 | 1415 |
| 1408 } // namespace content | 1416 } // namespace content |
| OLD | NEW |