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> |
| 8 #include <stdint.h> |
| 9 |
7 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
8 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/macros.h" |
9 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
10 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
11 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
12 #include "base/strings/string_split.h" | 16 #include "base/strings/string_split.h" |
13 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
14 #include "content/browser/fileapi/chrome_blob_storage_context.h" | 18 #include "content/browser/fileapi/chrome_blob_storage_context.h" |
15 #include "content/browser/fileapi/mock_url_request_delegate.h" | 19 #include "content/browser/fileapi/mock_url_request_delegate.h" |
16 #include "content/browser/quota/mock_quota_manager_proxy.h" | 20 #include "content/browser/quota/mock_quota_manager_proxy.h" |
17 #include "content/common/cache_storage/cache_storage_types.h" | 21 #include "content/common/cache_storage/cache_storage_types.h" |
18 #include "content/common/service_worker/service_worker_types.h" | 22 #include "content/common/service_worker/service_worker_types.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 // A disk_cache::Backend wrapper that can delay operations. | 54 // A disk_cache::Backend wrapper that can delay operations. |
51 class DelayableBackend : public disk_cache::Backend { | 55 class DelayableBackend : public disk_cache::Backend { |
52 public: | 56 public: |
53 DelayableBackend(scoped_ptr<disk_cache::Backend> backend) | 57 DelayableBackend(scoped_ptr<disk_cache::Backend> backend) |
54 : backend_(backend.Pass()), delay_open_(false) {} | 58 : backend_(backend.Pass()), delay_open_(false) {} |
55 | 59 |
56 // disk_cache::Backend overrides | 60 // disk_cache::Backend overrides |
57 net::CacheType GetCacheType() const override { | 61 net::CacheType GetCacheType() const override { |
58 return backend_->GetCacheType(); | 62 return backend_->GetCacheType(); |
59 } | 63 } |
60 int32 GetEntryCount() const override { return backend_->GetEntryCount(); } | 64 int32_t GetEntryCount() const override { return backend_->GetEntryCount(); } |
61 int OpenEntry(const std::string& key, | 65 int OpenEntry(const std::string& key, |
62 disk_cache::Entry** entry, | 66 disk_cache::Entry** entry, |
63 const CompletionCallback& callback) override { | 67 const CompletionCallback& callback) override { |
64 if (delay_open_) { | 68 if (delay_open_) { |
65 open_entry_callback_ = | 69 open_entry_callback_ = |
66 base::Bind(&DelayableBackend::OpenEntryDelayedImpl, | 70 base::Bind(&DelayableBackend::OpenEntryDelayedImpl, |
67 base::Unretained(this), key, entry, callback); | 71 base::Unretained(this), key, entry, callback); |
68 return net::ERR_IO_PENDING; | 72 return net::ERR_IO_PENDING; |
69 } | 73 } |
70 | 74 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 scoped_ptr<storage::BlobDataSnapshot> data = blob_handle.CreateSnapshot(); | 136 scoped_ptr<storage::BlobDataSnapshot> data = blob_handle.CreateSnapshot(); |
133 const auto& items = data->items(); | 137 const auto& items = data->items(); |
134 for (const auto& item : items) { | 138 for (const auto& item : items) { |
135 switch (item->type()) { | 139 switch (item->type()) { |
136 case storage::DataElement::TYPE_BYTES: { | 140 case storage::DataElement::TYPE_BYTES: { |
137 output->append(item->bytes(), item->length()); | 141 output->append(item->bytes(), item->length()); |
138 break; | 142 break; |
139 } | 143 } |
140 case storage::DataElement::TYPE_DISK_CACHE_ENTRY: { | 144 case storage::DataElement::TYPE_DISK_CACHE_ENTRY: { |
141 disk_cache::Entry* entry = item->disk_cache_entry(); | 145 disk_cache::Entry* entry = item->disk_cache_entry(); |
142 int32 body_size = entry->GetDataSize(item->disk_cache_stream_index()); | 146 int32_t body_size = entry->GetDataSize(item->disk_cache_stream_index()); |
143 | 147 |
144 scoped_refptr<net::IOBuffer> io_buffer = new net::IOBuffer(body_size); | 148 scoped_refptr<net::IOBuffer> io_buffer = new net::IOBuffer(body_size); |
145 net::TestCompletionCallback callback; | 149 net::TestCompletionCallback callback; |
146 int rv = | 150 int rv = |
147 entry->ReadData(item->disk_cache_stream_index(), 0, io_buffer.get(), | 151 entry->ReadData(item->disk_cache_stream_index(), 0, io_buffer.get(), |
148 body_size, callback.callback()); | 152 body_size, callback.callback()); |
149 if (rv == net::ERR_IO_PENDING) | 153 if (rv == net::ERR_IO_PENDING) |
150 rv = callback.WaitForResult(); | 154 rv = callback.WaitForResult(); |
151 EXPECT_EQ(body_size, rv); | 155 EXPECT_EQ(body_size, rv); |
152 if (rv > 0) | 156 if (rv > 0) |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 request.headers["Content-Type"] = "bar"; | 909 request.headers["Content-Type"] = "bar"; |
906 EXPECT_EQ("bar", request.headers["content-type"]); | 910 EXPECT_EQ("bar", request.headers["content-type"]); |
907 } | 911 } |
908 | 912 |
909 TEST_P(CacheStorageCacheTestP, QuotaManagerModified) { | 913 TEST_P(CacheStorageCacheTestP, QuotaManagerModified) { |
910 EXPECT_EQ(0, quota_manager_proxy_->notify_storage_modified_count()); | 914 EXPECT_EQ(0, quota_manager_proxy_->notify_storage_modified_count()); |
911 | 915 |
912 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); | 916 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); |
913 EXPECT_EQ(1, quota_manager_proxy_->notify_storage_modified_count()); | 917 EXPECT_EQ(1, quota_manager_proxy_->notify_storage_modified_count()); |
914 EXPECT_LT(0, quota_manager_proxy_->last_notified_delta()); | 918 EXPECT_LT(0, quota_manager_proxy_->last_notified_delta()); |
915 int64 sum_delta = quota_manager_proxy_->last_notified_delta(); | 919 int64_t sum_delta = quota_manager_proxy_->last_notified_delta(); |
916 | 920 |
917 EXPECT_TRUE(Put(body_request_, body_response_)); | 921 EXPECT_TRUE(Put(body_request_, body_response_)); |
918 EXPECT_EQ(2, quota_manager_proxy_->notify_storage_modified_count()); | 922 EXPECT_EQ(2, quota_manager_proxy_->notify_storage_modified_count()); |
919 EXPECT_LT(sum_delta, quota_manager_proxy_->last_notified_delta()); | 923 EXPECT_LT(sum_delta, quota_manager_proxy_->last_notified_delta()); |
920 sum_delta += quota_manager_proxy_->last_notified_delta(); | 924 sum_delta += quota_manager_proxy_->last_notified_delta(); |
921 | 925 |
922 EXPECT_TRUE(Delete(body_request_)); | 926 EXPECT_TRUE(Delete(body_request_)); |
923 EXPECT_EQ(3, quota_manager_proxy_->notify_storage_modified_count()); | 927 EXPECT_EQ(3, quota_manager_proxy_->notify_storage_modified_count()); |
924 sum_delta += quota_manager_proxy_->last_notified_delta(); | 928 sum_delta += quota_manager_proxy_->last_notified_delta(); |
925 | 929 |
926 EXPECT_TRUE(Delete(no_body_request_)); | 930 EXPECT_TRUE(Delete(no_body_request_)); |
927 EXPECT_EQ(4, quota_manager_proxy_->notify_storage_modified_count()); | 931 EXPECT_EQ(4, quota_manager_proxy_->notify_storage_modified_count()); |
928 sum_delta += quota_manager_proxy_->last_notified_delta(); | 932 sum_delta += quota_manager_proxy_->last_notified_delta(); |
929 | 933 |
930 EXPECT_EQ(0, sum_delta); | 934 EXPECT_EQ(0, sum_delta); |
931 } | 935 } |
932 | 936 |
933 TEST_F(CacheStorageCacheMemoryOnlyTest, MemoryBackedSize) { | 937 TEST_F(CacheStorageCacheMemoryOnlyTest, MemoryBackedSize) { |
934 EXPECT_EQ(0, cache_->MemoryBackedSize()); | 938 EXPECT_EQ(0, cache_->MemoryBackedSize()); |
935 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); | 939 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); |
936 EXPECT_LT(0, cache_->MemoryBackedSize()); | 940 EXPECT_LT(0, cache_->MemoryBackedSize()); |
937 int64 no_body_size = cache_->MemoryBackedSize(); | 941 int64_t no_body_size = cache_->MemoryBackedSize(); |
938 | 942 |
939 EXPECT_TRUE(Delete(no_body_request_)); | 943 EXPECT_TRUE(Delete(no_body_request_)); |
940 EXPECT_EQ(0, cache_->MemoryBackedSize()); | 944 EXPECT_EQ(0, cache_->MemoryBackedSize()); |
941 | 945 |
942 EXPECT_TRUE(Put(body_request_, body_response_)); | 946 EXPECT_TRUE(Put(body_request_, body_response_)); |
943 EXPECT_LT(no_body_size, cache_->MemoryBackedSize()); | 947 EXPECT_LT(no_body_size, cache_->MemoryBackedSize()); |
944 | 948 |
945 EXPECT_TRUE(Delete(body_request_)); | 949 EXPECT_TRUE(Delete(body_request_)); |
946 EXPECT_EQ(0, cache_->MemoryBackedSize()); | 950 EXPECT_EQ(0, cache_->MemoryBackedSize()); |
947 } | 951 } |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1010 EXPECT_EQ(1, sequence_out); | 1014 EXPECT_EQ(1, sequence_out); |
1011 close_loop2->Run(); | 1015 close_loop2->Run(); |
1012 EXPECT_EQ(2, sequence_out); | 1016 EXPECT_EQ(2, sequence_out); |
1013 } | 1017 } |
1014 | 1018 |
1015 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest, | 1019 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest, |
1016 CacheStorageCacheTestP, | 1020 CacheStorageCacheTestP, |
1017 ::testing::Values(false, true)); | 1021 ::testing::Values(false, true)); |
1018 | 1022 |
1019 } // namespace content | 1023 } // namespace content |
OLD | NEW |