| 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/appcache/appcache_storage_impl.h" | 5 #include "content/browser/appcache/appcache_storage_impl.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 |
| 9 #include <memory> |
| 8 #include <stack> | 10 #include <stack> |
| 9 #include <utility> | 11 #include <utility> |
| 10 | 12 |
| 11 #include "base/bind.h" | 13 #include "base/bind.h" |
| 12 #include "base/bind_helpers.h" | 14 #include "base/bind_helpers.h" |
| 13 #include "base/callback.h" | 15 #include "base/callback.h" |
| 14 #include "base/files/file_util.h" | 16 #include "base/files/file_util.h" |
| 15 #include "base/files/scoped_temp_dir.h" | 17 #include "base/files/scoped_temp_dir.h" |
| 16 #include "base/location.h" | 18 #include "base/location.h" |
| 17 #include "base/macros.h" | 19 #include "base/macros.h" |
| 18 #include "base/memory/scoped_ptr.h" | 20 #include "base/memory/ptr_util.h" |
| 19 #include "base/single_thread_task_runner.h" | 21 #include "base/single_thread_task_runner.h" |
| 20 #include "base/synchronization/waitable_event.h" | 22 #include "base/synchronization/waitable_event.h" |
| 21 #include "base/thread_task_runner_handle.h" | 23 #include "base/thread_task_runner_handle.h" |
| 22 #include "base/threading/thread.h" | 24 #include "base/threading/thread.h" |
| 23 #include "content/browser/appcache/appcache.h" | 25 #include "content/browser/appcache/appcache.h" |
| 24 #include "content/browser/appcache/appcache_backend_impl.h" | 26 #include "content/browser/appcache/appcache_backend_impl.h" |
| 25 #include "content/browser/appcache/appcache_database.h" | 27 #include "content/browser/appcache/appcache_database.h" |
| 26 #include "content/browser/appcache/appcache_entry.h" | 28 #include "content/browser/appcache/appcache_entry.h" |
| 27 #include "content/browser/appcache/appcache_group.h" | 29 #include "content/browser/appcache/appcache_group.h" |
| 28 #include "content/browser/appcache/appcache_host.h" | 30 #include "content/browser/appcache/appcache_host.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 arraysize(not_found_headers)); | 128 arraysize(not_found_headers)); |
| 127 (*body) = ""; | 129 (*body) = ""; |
| 128 } | 130 } |
| 129 } | 131 } |
| 130 }; | 132 }; |
| 131 | 133 |
| 132 class MockHttpServerJobFactory | 134 class MockHttpServerJobFactory |
| 133 : public net::URLRequestJobFactory::ProtocolHandler { | 135 : public net::URLRequestJobFactory::ProtocolHandler { |
| 134 public: | 136 public: |
| 135 MockHttpServerJobFactory( | 137 MockHttpServerJobFactory( |
| 136 scoped_ptr<net::URLRequestInterceptor> appcache_start_interceptor) | 138 std::unique_ptr<net::URLRequestInterceptor> appcache_start_interceptor) |
| 137 : appcache_start_interceptor_(std::move(appcache_start_interceptor)) {} | 139 : appcache_start_interceptor_(std::move(appcache_start_interceptor)) {} |
| 138 | 140 |
| 139 net::URLRequestJob* MaybeCreateJob( | 141 net::URLRequestJob* MaybeCreateJob( |
| 140 net::URLRequest* request, | 142 net::URLRequest* request, |
| 141 net::NetworkDelegate* network_delegate) const override { | 143 net::NetworkDelegate* network_delegate) const override { |
| 142 net::URLRequestJob* appcache_job = | 144 net::URLRequestJob* appcache_job = |
| 143 appcache_start_interceptor_->MaybeInterceptRequest( | 145 appcache_start_interceptor_->MaybeInterceptRequest( |
| 144 request, network_delegate); | 146 request, network_delegate); |
| 145 if (appcache_job) | 147 if (appcache_job) |
| 146 return appcache_job; | 148 return appcache_job; |
| 147 return MockHttpServer::CreateJob(request, network_delegate); | 149 return MockHttpServer::CreateJob(request, network_delegate); |
| 148 } | 150 } |
| 149 private: | 151 private: |
| 150 scoped_ptr<net::URLRequestInterceptor> appcache_start_interceptor_; | 152 std::unique_ptr<net::URLRequestInterceptor> appcache_start_interceptor_; |
| 151 }; | 153 }; |
| 152 | 154 |
| 153 class IOThread : public base::Thread { | 155 class IOThread : public base::Thread { |
| 154 public: | 156 public: |
| 155 explicit IOThread(const char* name) | 157 explicit IOThread(const char* name) |
| 156 : base::Thread(name) { | 158 : base::Thread(name) { |
| 157 } | 159 } |
| 158 | 160 |
| 159 ~IOThread() override { Stop(); } | 161 ~IOThread() override { Stop(); } |
| 160 | 162 |
| 161 net::URLRequestContext* request_context() { | 163 net::URLRequestContext* request_context() { |
| 162 return request_context_.get(); | 164 return request_context_.get(); |
| 163 } | 165 } |
| 164 | 166 |
| 165 void Init() override { | 167 void Init() override { |
| 166 scoped_ptr<net::URLRequestJobFactoryImpl> factory( | 168 std::unique_ptr<net::URLRequestJobFactoryImpl> factory( |
| 167 new net::URLRequestJobFactoryImpl()); | 169 new net::URLRequestJobFactoryImpl()); |
| 168 factory->SetProtocolHandler( | 170 factory->SetProtocolHandler( |
| 169 "http", make_scoped_ptr(new MockHttpServerJobFactory( | 171 "http", base::WrapUnique(new MockHttpServerJobFactory( |
| 170 make_scoped_ptr(new AppCacheInterceptor())))); | 172 base::WrapUnique(new AppCacheInterceptor())))); |
| 171 job_factory_ = std::move(factory); | 173 job_factory_ = std::move(factory); |
| 172 request_context_.reset(new net::TestURLRequestContext()); | 174 request_context_.reset(new net::TestURLRequestContext()); |
| 173 request_context_->set_job_factory(job_factory_.get()); | 175 request_context_->set_job_factory(job_factory_.get()); |
| 174 } | 176 } |
| 175 | 177 |
| 176 void CleanUp() override { | 178 void CleanUp() override { |
| 177 request_context_.reset(); | 179 request_context_.reset(); |
| 178 job_factory_.reset(); | 180 job_factory_.reset(); |
| 179 } | 181 } |
| 180 | 182 |
| 181 private: | 183 private: |
| 182 scoped_ptr<net::URLRequestJobFactory> job_factory_; | 184 std::unique_ptr<net::URLRequestJobFactory> job_factory_; |
| 183 scoped_ptr<net::URLRequestContext> request_context_; | 185 std::unique_ptr<net::URLRequestContext> request_context_; |
| 184 }; | 186 }; |
| 185 | 187 |
| 186 scoped_ptr<IOThread> io_thread; | 188 std::unique_ptr<IOThread> io_thread; |
| 187 scoped_ptr<base::Thread> db_thread; | 189 std::unique_ptr<base::Thread> db_thread; |
| 188 | 190 |
| 189 } // namespace | 191 } // namespace |
| 190 | 192 |
| 191 class AppCacheStorageImplTest : public testing::Test { | 193 class AppCacheStorageImplTest : public testing::Test { |
| 192 public: | 194 public: |
| 193 class MockStorageDelegate : public AppCacheStorage::Delegate { | 195 class MockStorageDelegate : public AppCacheStorage::Delegate { |
| 194 public: | 196 public: |
| 195 explicit MockStorageDelegate(AppCacheStorageImplTest* test) | 197 explicit MockStorageDelegate(AppCacheStorageImplTest* test) |
| 196 : loaded_cache_id_(0), stored_group_success_(false), | 198 : loaded_cache_id_(0), stored_group_success_(false), |
| 197 would_exceed_quota_(false), obsoleted_success_(false), | 199 would_exceed_quota_(false), obsoleted_success_(false), |
| (...skipping 1674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1872 entry_record.response_size = default_entry.response_size(); | 1874 entry_record.response_size = default_entry.response_size(); |
| 1873 EXPECT_TRUE(database()->InsertEntry(&entry_record)); | 1875 EXPECT_TRUE(database()->InsertEntry(&entry_record)); |
| 1874 | 1876 |
| 1875 storage()->usage_map_[manifest_url.GetOrigin()] = | 1877 storage()->usage_map_[manifest_url.GetOrigin()] = |
| 1876 default_entry.response_size(); | 1878 default_entry.response_size(); |
| 1877 } | 1879 } |
| 1878 } | 1880 } |
| 1879 | 1881 |
| 1880 // Data members -------------------------------------------------- | 1882 // Data members -------------------------------------------------- |
| 1881 | 1883 |
| 1882 scoped_ptr<base::WaitableEvent> test_finished_event_; | 1884 std::unique_ptr<base::WaitableEvent> test_finished_event_; |
| 1883 std::stack<base::Closure> task_stack_; | 1885 std::stack<base::Closure> task_stack_; |
| 1884 scoped_ptr<AppCacheServiceImpl> service_; | 1886 std::unique_ptr<AppCacheServiceImpl> service_; |
| 1885 scoped_ptr<MockStorageDelegate> delegate_; | 1887 std::unique_ptr<MockStorageDelegate> delegate_; |
| 1886 scoped_refptr<MockQuotaManagerProxy> mock_quota_manager_proxy_; | 1888 scoped_refptr<MockQuotaManagerProxy> mock_quota_manager_proxy_; |
| 1887 scoped_refptr<AppCacheGroup> group_; | 1889 scoped_refptr<AppCacheGroup> group_; |
| 1888 scoped_refptr<AppCache> cache_; | 1890 scoped_refptr<AppCache> cache_; |
| 1889 scoped_refptr<AppCache> cache2_; | 1891 scoped_refptr<AppCache> cache2_; |
| 1890 | 1892 |
| 1891 // Specifically for the Reinitalize test. | 1893 // Specifically for the Reinitalize test. |
| 1892 base::ScopedTempDir temp_directory_; | 1894 base::ScopedTempDir temp_directory_; |
| 1893 scoped_ptr<MockServiceObserver> observer_; | 1895 std::unique_ptr<MockServiceObserver> observer_; |
| 1894 MockAppCacheFrontend frontend_; | 1896 MockAppCacheFrontend frontend_; |
| 1895 scoped_ptr<AppCacheBackendImpl> backend_; | 1897 std::unique_ptr<AppCacheBackendImpl> backend_; |
| 1896 net::TestDelegate request_delegate_; | 1898 net::TestDelegate request_delegate_; |
| 1897 scoped_ptr<net::URLRequest> request_; | 1899 std::unique_ptr<net::URLRequest> request_; |
| 1898 }; | 1900 }; |
| 1899 | 1901 |
| 1900 | 1902 |
| 1901 TEST_F(AppCacheStorageImplTest, LoadCache_Miss) { | 1903 TEST_F(AppCacheStorageImplTest, LoadCache_Miss) { |
| 1902 RunTestOnIOThread(&AppCacheStorageImplTest::LoadCache_Miss); | 1904 RunTestOnIOThread(&AppCacheStorageImplTest::LoadCache_Miss); |
| 1903 } | 1905 } |
| 1904 | 1906 |
| 1905 TEST_F(AppCacheStorageImplTest, LoadCache_NearHit) { | 1907 TEST_F(AppCacheStorageImplTest, LoadCache_NearHit) { |
| 1906 RunTestOnIOThread(&AppCacheStorageImplTest::LoadCache_NearHit); | 1908 RunTestOnIOThread(&AppCacheStorageImplTest::LoadCache_NearHit); |
| 1907 } | 1909 } |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2024 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize2); | 2026 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize2); |
| 2025 } | 2027 } |
| 2026 | 2028 |
| 2027 TEST_F(AppCacheStorageImplTest, Reinitialize3) { | 2029 TEST_F(AppCacheStorageImplTest, Reinitialize3) { |
| 2028 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize3); | 2030 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize3); |
| 2029 } | 2031 } |
| 2030 | 2032 |
| 2031 // That's all folks! | 2033 // That's all folks! |
| 2032 | 2034 |
| 2033 } // namespace content | 2035 } // namespace content |
| OLD | NEW |