Chromium Code Reviews| 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 WEBKIT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ | 5 #ifndef WEBKIT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ |
| 6 #define WEBKIT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ | 6 #define WEBKIT_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 17 matching lines...) Expand all Loading... | |
| 28 namespace appcache { | 28 namespace appcache { |
| 29 | 29 |
| 30 class HostNotifier; | 30 class HostNotifier; |
| 31 | 31 |
| 32 // Application cache Update algorithm and state. | 32 // Application cache Update algorithm and state. |
| 33 class WEBKIT_STORAGE_BROWSER_EXPORT AppCacheUpdateJob | 33 class WEBKIT_STORAGE_BROWSER_EXPORT AppCacheUpdateJob |
| 34 : public AppCacheStorage::Delegate, | 34 : public AppCacheStorage::Delegate, |
| 35 public AppCacheHost::Observer, | 35 public AppCacheHost::Observer, |
| 36 public AppCacheService::Observer { | 36 public AppCacheService::Observer { |
| 37 public: | 37 public: |
| 38 // Used for uma stats only for now. | |
|
jsbell
2014/02/14 23:53:26
Should probably warn that values should only be ap
| |
| 39 enum ResultType { | |
| 40 UPDATE_OK, DB_ERROR, DISKCACHE_ERROR, QUOTA_ERROR, REDIRECT_ERROR, | |
| 41 MANIFEST_ERROR, NETWORK_ERROR, SERVER_ERROR, | |
| 42 NUM_UPDATE_JOB_RESULT_TYPES | |
| 43 }; | |
| 44 | |
| 38 AppCacheUpdateJob(AppCacheService* service, AppCacheGroup* group); | 45 AppCacheUpdateJob(AppCacheService* service, AppCacheGroup* group); |
| 39 virtual ~AppCacheUpdateJob(); | 46 virtual ~AppCacheUpdateJob(); |
| 40 | 47 |
| 41 // Triggers the update process or adds more info if this update is already | 48 // Triggers the update process or adds more info if this update is already |
| 42 // in progress. | 49 // in progress. |
| 43 void StartUpdate(AppCacheHost* host, const GURL& new_master_resource); | 50 void StartUpdate(AppCacheHost* host, const GURL& new_master_resource); |
| 44 | 51 |
| 45 private: | 52 private: |
| 46 friend class AppCacheUpdateJobTest; | 53 friend class AppCacheUpdateJobTest; |
| 47 class URLFetcher; | 54 class URLFetcher; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 111 const std::string& manifest_data() const { return manifest_data_; } | 118 const std::string& manifest_data() const { return manifest_data_; } |
| 112 AppCacheResponseWriter* response_writer() const { | 119 AppCacheResponseWriter* response_writer() const { |
| 113 return response_writer_.get(); | 120 return response_writer_.get(); |
| 114 } | 121 } |
| 115 void set_existing_response_headers(net::HttpResponseHeaders* headers) { | 122 void set_existing_response_headers(net::HttpResponseHeaders* headers) { |
| 116 existing_response_headers_ = headers; | 123 existing_response_headers_ = headers; |
| 117 } | 124 } |
| 118 void set_existing_entry(const AppCacheEntry& entry) { | 125 void set_existing_entry(const AppCacheEntry& entry) { |
| 119 existing_entry_ = entry; | 126 existing_entry_ = entry; |
| 120 } | 127 } |
| 128 ResultType result() const { return result_; } | |
| 121 | 129 |
| 122 private: | 130 private: |
| 123 // URLRequest::Delegate overrides | 131 // URLRequest::Delegate overrides |
| 124 virtual void OnReceivedRedirect(net::URLRequest* request, | 132 virtual void OnReceivedRedirect(net::URLRequest* request, |
| 125 const GURL& new_url, | 133 const GURL& new_url, |
| 126 bool* defer_redirect) OVERRIDE; | 134 bool* defer_redirect) OVERRIDE; |
| 127 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE; | 135 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE; |
| 128 virtual void OnReadCompleted(net::URLRequest* request, | 136 virtual void OnReadCompleted(net::URLRequest* request, |
| 129 int bytes_read) OVERRIDE; | 137 int bytes_read) OVERRIDE; |
| 130 | 138 |
| 131 void AddConditionalHeaders(const net::HttpResponseHeaders* headers); | 139 void AddConditionalHeaders(const net::HttpResponseHeaders* headers); |
| 132 void OnWriteComplete(int result); | 140 void OnWriteComplete(int result); |
| 133 void ReadResponseData(); | 141 void ReadResponseData(); |
| 134 bool ConsumeResponseData(int bytes_read); | 142 bool ConsumeResponseData(int bytes_read); |
| 135 void OnResponseCompleted(); | 143 void OnResponseCompleted(); |
| 136 bool MaybeRetryRequest(); | 144 bool MaybeRetryRequest(); |
| 137 | 145 |
| 138 GURL url_; | 146 GURL url_; |
| 139 AppCacheUpdateJob* job_; | 147 AppCacheUpdateJob* job_; |
| 140 FetchType fetch_type_; | 148 FetchType fetch_type_; |
| 141 int retry_503_attempts_; | 149 int retry_503_attempts_; |
| 142 scoped_refptr<net::IOBuffer> buffer_; | 150 scoped_refptr<net::IOBuffer> buffer_; |
| 143 scoped_ptr<net::URLRequest> request_; | 151 scoped_ptr<net::URLRequest> request_; |
| 144 AppCacheEntry existing_entry_; | 152 AppCacheEntry existing_entry_; |
| 145 scoped_refptr<net::HttpResponseHeaders> existing_response_headers_; | 153 scoped_refptr<net::HttpResponseHeaders> existing_response_headers_; |
| 146 std::string manifest_data_; | 154 std::string manifest_data_; |
| 155 ResultType result_; | |
| 147 scoped_ptr<AppCacheResponseWriter> response_writer_; | 156 scoped_ptr<AppCacheResponseWriter> response_writer_; |
| 148 }; // class URLFetcher | 157 }; // class URLFetcher |
| 149 | 158 |
| 150 AppCacheResponseWriter* CreateResponseWriter(); | 159 AppCacheResponseWriter* CreateResponseWriter(); |
| 151 | 160 |
| 152 // Methods for AppCacheStorage::Delegate. | 161 // Methods for AppCacheStorage::Delegate. |
| 153 virtual void OnResponseInfoLoaded(AppCacheResponseInfo* response_info, | 162 virtual void OnResponseInfoLoaded(AppCacheResponseInfo* response_info, |
| 154 int64 response_id) OVERRIDE; | 163 int64 response_id) OVERRIDE; |
| 155 virtual void OnGroupAndNewestCacheStored(AppCacheGroup* group, | 164 virtual void OnGroupAndNewestCacheStored(AppCacheGroup* group, |
| 156 AppCache* newest_cache, | 165 AppCache* newest_cache, |
| 157 bool success, | 166 bool success, |
| 158 bool would_exceed_quota) OVERRIDE; | 167 bool would_exceed_quota) OVERRIDE; |
| 159 virtual void OnGroupMadeObsolete(AppCacheGroup* group, bool success) OVERRIDE; | 168 virtual void OnGroupMadeObsolete(AppCacheGroup* group, bool success) OVERRIDE; |
| 160 | 169 |
| 161 // Methods for AppCacheHost::Observer. | 170 // Methods for AppCacheHost::Observer. |
| 162 virtual void OnCacheSelectionComplete(AppCacheHost* host) OVERRIDE {} // N/A | 171 virtual void OnCacheSelectionComplete(AppCacheHost* host) OVERRIDE {} // N/A |
| 163 virtual void OnDestructionImminent(AppCacheHost* host) OVERRIDE; | 172 virtual void OnDestructionImminent(AppCacheHost* host) OVERRIDE; |
| 164 | 173 |
| 165 // Methods for AppCacheService::Observer. | 174 // Methods for AppCacheService::Observer. |
| 166 virtual void OnServiceReinitialized( | 175 virtual void OnServiceReinitialized( |
| 167 AppCacheStorageReference* old_storage) OVERRIDE; | 176 AppCacheStorageReference* old_storage) OVERRIDE; |
| 168 | 177 |
| 169 void HandleCacheFailure(const std::string& error_message); | 178 void HandleCacheFailure(const std::string& error_message, ResultType result); |
| 170 | 179 |
| 171 void FetchManifest(bool is_first_fetch); | 180 void FetchManifest(bool is_first_fetch); |
| 172 void HandleManifestFetchCompleted(URLFetcher* fetcher); | 181 void HandleManifestFetchCompleted(URLFetcher* fetcher); |
| 173 void ContinueHandleManifestFetchCompleted(bool changed); | 182 void ContinueHandleManifestFetchCompleted(bool changed); |
| 174 | 183 |
| 175 void HandleUrlFetchCompleted(URLFetcher* fetcher); | 184 void HandleUrlFetchCompleted(URLFetcher* fetcher); |
| 176 void HandleMasterEntryFetchCompleted(URLFetcher* fetcher); | 185 void HandleMasterEntryFetchCompleted(URLFetcher* fetcher); |
| 177 | 186 |
| 178 void HandleManifestRefetchCompleted(URLFetcher* fetcher); | 187 void HandleManifestRefetchCompleted(URLFetcher* fetcher); |
| 179 void OnManifestInfoWriteComplete(int result); | 188 void OnManifestInfoWriteComplete(int result); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 314 AppCacheStorage* storage_; | 323 AppCacheStorage* storage_; |
| 315 | 324 |
| 316 FRIEND_TEST_ALL_PREFIXES(AppCacheGroupTest, QueueUpdate); | 325 FRIEND_TEST_ALL_PREFIXES(AppCacheGroupTest, QueueUpdate); |
| 317 | 326 |
| 318 DISALLOW_COPY_AND_ASSIGN(AppCacheUpdateJob); | 327 DISALLOW_COPY_AND_ASSIGN(AppCacheUpdateJob); |
| 319 }; | 328 }; |
| 320 | 329 |
| 321 } // namespace appcache | 330 } // namespace appcache |
| 322 | 331 |
| 323 #endif // WEBKIT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ | 332 #endif // WEBKIT_BROWSER_APPCACHE_APPCACHE_UPDATE_JOB_H_ |
| OLD | NEW |