OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CONTENT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ | 5 #ifndef CONTENT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ |
6 #define CONTENT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ | 6 #define CONTENT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 28 matching lines...) Expand all Loading... |
39 public AppCacheServiceImpl::Observer { | 39 public AppCacheServiceImpl::Observer { |
40 public: | 40 public: |
41 // Used for uma stats only for now, so new values are append only. | 41 // Used for uma stats only for now, so new values are append only. |
42 enum ResultType { | 42 enum ResultType { |
43 UPDATE_OK, DB_ERROR, DISKCACHE_ERROR, QUOTA_ERROR, REDIRECT_ERROR, | 43 UPDATE_OK, DB_ERROR, DISKCACHE_ERROR, QUOTA_ERROR, REDIRECT_ERROR, |
44 MANIFEST_ERROR, NETWORK_ERROR, SERVER_ERROR, CANCELLED_ERROR, | 44 MANIFEST_ERROR, NETWORK_ERROR, SERVER_ERROR, CANCELLED_ERROR, |
45 SECURITY_ERROR, NUM_UPDATE_JOB_RESULT_TYPES | 45 SECURITY_ERROR, NUM_UPDATE_JOB_RESULT_TYPES |
46 }; | 46 }; |
47 | 47 |
48 AppCacheUpdateJob(AppCacheServiceImpl* service, AppCacheGroup* group); | 48 AppCacheUpdateJob(AppCacheServiceImpl* service, AppCacheGroup* group); |
49 virtual ~AppCacheUpdateJob(); | 49 ~AppCacheUpdateJob() override; |
50 | 50 |
51 // Triggers the update process or adds more info if this update is already | 51 // Triggers the update process or adds more info if this update is already |
52 // in progress. | 52 // in progress. |
53 void StartUpdate(AppCacheHost* host, const GURL& new_master_resource); | 53 void StartUpdate(AppCacheHost* host, const GURL& new_master_resource); |
54 | 54 |
55 private: | 55 private: |
56 friend class content::AppCacheGroupTest; | 56 friend class content::AppCacheGroupTest; |
57 friend class content::AppCacheUpdateJobTest; | 57 friend class content::AppCacheUpdateJobTest; |
58 class URLFetcher; | 58 class URLFetcher; |
59 | 59 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 public: | 107 public: |
108 enum FetchType { | 108 enum FetchType { |
109 MANIFEST_FETCH, | 109 MANIFEST_FETCH, |
110 URL_FETCH, | 110 URL_FETCH, |
111 MASTER_ENTRY_FETCH, | 111 MASTER_ENTRY_FETCH, |
112 MANIFEST_REFETCH, | 112 MANIFEST_REFETCH, |
113 }; | 113 }; |
114 URLFetcher(const GURL& url, | 114 URLFetcher(const GURL& url, |
115 FetchType fetch_type, | 115 FetchType fetch_type, |
116 AppCacheUpdateJob* job); | 116 AppCacheUpdateJob* job); |
117 virtual ~URLFetcher(); | 117 ~URLFetcher() override; |
118 void Start(); | 118 void Start(); |
119 FetchType fetch_type() const { return fetch_type_; } | 119 FetchType fetch_type() const { return fetch_type_; } |
120 net::URLRequest* request() const { return request_.get(); } | 120 net::URLRequest* request() const { return request_.get(); } |
121 const AppCacheEntry& existing_entry() const { return existing_entry_; } | 121 const AppCacheEntry& existing_entry() const { return existing_entry_; } |
122 const std::string& manifest_data() const { return manifest_data_; } | 122 const std::string& manifest_data() const { return manifest_data_; } |
123 AppCacheResponseWriter* response_writer() const { | 123 AppCacheResponseWriter* response_writer() const { |
124 return response_writer_.get(); | 124 return response_writer_.get(); |
125 } | 125 } |
126 void set_existing_response_headers(net::HttpResponseHeaders* headers) { | 126 void set_existing_response_headers(net::HttpResponseHeaders* headers) { |
127 existing_response_headers_ = headers; | 127 existing_response_headers_ = headers; |
128 } | 128 } |
129 void set_existing_entry(const AppCacheEntry& entry) { | 129 void set_existing_entry(const AppCacheEntry& entry) { |
130 existing_entry_ = entry; | 130 existing_entry_ = entry; |
131 } | 131 } |
132 ResultType result() const { return result_; } | 132 ResultType result() const { return result_; } |
133 int redirect_response_code() const { return redirect_response_code_; } | 133 int redirect_response_code() const { return redirect_response_code_; } |
134 | 134 |
135 private: | 135 private: |
136 // URLRequest::Delegate overrides | 136 // URLRequest::Delegate overrides |
137 virtual void OnReceivedRedirect(net::URLRequest* request, | 137 void OnReceivedRedirect(net::URLRequest* request, |
138 const net::RedirectInfo& redirect_info, | 138 const net::RedirectInfo& redirect_info, |
139 bool* defer_redirect) override; | 139 bool* defer_redirect) override; |
140 virtual void OnResponseStarted(net::URLRequest* request) override; | 140 void OnResponseStarted(net::URLRequest* request) override; |
141 virtual void OnReadCompleted(net::URLRequest* request, | 141 void OnReadCompleted(net::URLRequest* request, int bytes_read) override; |
142 int bytes_read) override; | |
143 | 142 |
144 void AddConditionalHeaders(const net::HttpResponseHeaders* headers); | 143 void AddConditionalHeaders(const net::HttpResponseHeaders* headers); |
145 void OnWriteComplete(int result); | 144 void OnWriteComplete(int result); |
146 void ReadResponseData(); | 145 void ReadResponseData(); |
147 bool ConsumeResponseData(int bytes_read); | 146 bool ConsumeResponseData(int bytes_read); |
148 void OnResponseCompleted(); | 147 void OnResponseCompleted(); |
149 bool MaybeRetryRequest(); | 148 bool MaybeRetryRequest(); |
150 | 149 |
151 GURL url_; | 150 GURL url_; |
152 AppCacheUpdateJob* job_; | 151 AppCacheUpdateJob* job_; |
153 FetchType fetch_type_; | 152 FetchType fetch_type_; |
154 int retry_503_attempts_; | 153 int retry_503_attempts_; |
155 scoped_refptr<net::IOBuffer> buffer_; | 154 scoped_refptr<net::IOBuffer> buffer_; |
156 scoped_ptr<net::URLRequest> request_; | 155 scoped_ptr<net::URLRequest> request_; |
157 AppCacheEntry existing_entry_; | 156 AppCacheEntry existing_entry_; |
158 scoped_refptr<net::HttpResponseHeaders> existing_response_headers_; | 157 scoped_refptr<net::HttpResponseHeaders> existing_response_headers_; |
159 std::string manifest_data_; | 158 std::string manifest_data_; |
160 ResultType result_; | 159 ResultType result_; |
161 int redirect_response_code_; | 160 int redirect_response_code_; |
162 scoped_ptr<AppCacheResponseWriter> response_writer_; | 161 scoped_ptr<AppCacheResponseWriter> response_writer_; |
163 }; // class URLFetcher | 162 }; // class URLFetcher |
164 | 163 |
165 AppCacheResponseWriter* CreateResponseWriter(); | 164 AppCacheResponseWriter* CreateResponseWriter(); |
166 | 165 |
167 // Methods for AppCacheStorage::Delegate. | 166 // Methods for AppCacheStorage::Delegate. |
168 virtual void OnResponseInfoLoaded(AppCacheResponseInfo* response_info, | 167 void OnResponseInfoLoaded(AppCacheResponseInfo* response_info, |
169 int64 response_id) override; | 168 int64 response_id) override; |
170 virtual void OnGroupAndNewestCacheStored(AppCacheGroup* group, | 169 void OnGroupAndNewestCacheStored(AppCacheGroup* group, |
171 AppCache* newest_cache, | 170 AppCache* newest_cache, |
172 bool success, | |
173 bool would_exceed_quota) override; | |
174 virtual void OnGroupMadeObsolete(AppCacheGroup* group, | |
175 bool success, | 171 bool success, |
176 int response_code) override; | 172 bool would_exceed_quota) override; |
| 173 void OnGroupMadeObsolete(AppCacheGroup* group, |
| 174 bool success, |
| 175 int response_code) override; |
177 | 176 |
178 // Methods for AppCacheHost::Observer. | 177 // Methods for AppCacheHost::Observer. |
179 virtual void OnCacheSelectionComplete(AppCacheHost* host) override {} // N/A | 178 void OnCacheSelectionComplete(AppCacheHost* host) override {} // N/A |
180 virtual void OnDestructionImminent(AppCacheHost* host) override; | 179 void OnDestructionImminent(AppCacheHost* host) override; |
181 | 180 |
182 // Methods for AppCacheServiceImpl::Observer. | 181 // Methods for AppCacheServiceImpl::Observer. |
183 virtual void OnServiceReinitialized( | 182 void OnServiceReinitialized(AppCacheStorageReference* old_storage) override; |
184 AppCacheStorageReference* old_storage) override; | |
185 | 183 |
186 void HandleCacheFailure(const AppCacheErrorDetails& details, | 184 void HandleCacheFailure(const AppCacheErrorDetails& details, |
187 ResultType result, | 185 ResultType result, |
188 const GURL& failed_resource_url); | 186 const GURL& failed_resource_url); |
189 | 187 |
190 void FetchManifest(bool is_first_fetch); | 188 void FetchManifest(bool is_first_fetch); |
191 void HandleManifestFetchCompleted(URLFetcher* fetcher); | 189 void HandleManifestFetchCompleted(URLFetcher* fetcher); |
192 void ContinueHandleManifestFetchCompleted(bool changed); | 190 void ContinueHandleManifestFetchCompleted(bool changed); |
193 | 191 |
194 void HandleUrlFetchCompleted(URLFetcher* fetcher); | 192 void HandleUrlFetchCompleted(URLFetcher* fetcher); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 AppCacheStorage* storage_; | 337 AppCacheStorage* storage_; |
340 | 338 |
341 FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate); | 339 FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate); |
342 | 340 |
343 DISALLOW_COPY_AND_ASSIGN(AppCacheUpdateJob); | 341 DISALLOW_COPY_AND_ASSIGN(AppCacheUpdateJob); |
344 }; | 342 }; |
345 | 343 |
346 } // namespace content | 344 } // namespace content |
347 | 345 |
348 #endif // CONTENT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ | 346 #endif // CONTENT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ |
OLD | NEW |