| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "webkit/appcache/web_application_cache_host_impl.h" | 5 #include "webkit/appcache/web_application_cache_host_impl.h" |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/id_map.h" | 8 #include "base/id_map.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 | 65 |
| 66 WebApplicationCacheHostImpl::WebApplicationCacheHostImpl( | 66 WebApplicationCacheHostImpl::WebApplicationCacheHostImpl( |
| 67 WebApplicationCacheHostClient* client, | 67 WebApplicationCacheHostClient* client, |
| 68 AppCacheBackend* backend) | 68 AppCacheBackend* backend) |
| 69 : client_(client), | 69 : client_(client), |
| 70 backend_(backend), | 70 backend_(backend), |
| 71 ALLOW_THIS_IN_INITIALIZER_LIST(host_id_(g_hosts_map.Get().Add(this))), | 71 ALLOW_THIS_IN_INITIALIZER_LIST(host_id_(g_hosts_map.Get().Add(this))), |
| 72 status_(UNCACHED), | 72 status_(UNCACHED), |
| 73 is_scheme_supported_(false), | 73 is_scheme_supported_(false), |
| 74 is_get_method_(false), | 74 is_get_method_(false), |
| 75 is_new_master_entry_(MAYBE) { | 75 is_new_master_entry_(MAYBE), |
| 76 was_select_cache_called_(false) { |
| 76 DCHECK(client && backend && (host_id_ != kNoHostId)); | 77 DCHECK(client && backend && (host_id_ != kNoHostId)); |
| 77 | 78 |
| 78 backend_->RegisterHost(host_id_); | 79 backend_->RegisterHost(host_id_); |
| 79 } | 80 } |
| 80 | 81 |
| 81 WebApplicationCacheHostImpl::~WebApplicationCacheHostImpl() { | 82 WebApplicationCacheHostImpl::~WebApplicationCacheHostImpl() { |
| 82 backend_->UnregisterHost(host_id_); | 83 backend_->UnregisterHost(host_id_); |
| 83 g_hosts_map.Get().Remove(host_id_); | 84 g_hosts_map.Get().Remove(host_id_); |
| 84 } | 85 } |
| 85 | 86 |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 is_get_method_ = (method == kHttpGETMethod); | 165 is_get_method_ = (method == kHttpGETMethod); |
| 165 DCHECK(method == StringToUpperASCII(method)); | 166 DCHECK(method == StringToUpperASCII(method)); |
| 166 } | 167 } |
| 167 | 168 |
| 168 void WebApplicationCacheHostImpl::willStartSubResourceRequest( | 169 void WebApplicationCacheHostImpl::willStartSubResourceRequest( |
| 169 WebURLRequest& request) { | 170 WebURLRequest& request) { |
| 170 request.setAppCacheHostID(host_id_); | 171 request.setAppCacheHostID(host_id_); |
| 171 } | 172 } |
| 172 | 173 |
| 173 void WebApplicationCacheHostImpl::selectCacheWithoutManifest() { | 174 void WebApplicationCacheHostImpl::selectCacheWithoutManifest() { |
| 175 if (was_select_cache_called_) |
| 176 return; |
| 177 was_select_cache_called_ = true; |
| 178 |
| 174 status_ = (document_response_.appCacheID() == kNoCacheId) ? | 179 status_ = (document_response_.appCacheID() == kNoCacheId) ? |
| 175 UNCACHED : CHECKING; | 180 UNCACHED : CHECKING; |
| 176 is_new_master_entry_ = NO; | 181 is_new_master_entry_ = NO; |
| 177 backend_->SelectCache(host_id_, document_url_, | 182 backend_->SelectCache(host_id_, document_url_, |
| 178 document_response_.appCacheID(), | 183 document_response_.appCacheID(), |
| 179 GURL()); | 184 GURL()); |
| 180 } | 185 } |
| 181 | 186 |
| 182 bool WebApplicationCacheHostImpl::selectCacheWithManifest( | 187 bool WebApplicationCacheHostImpl::selectCacheWithManifest( |
| 183 const WebURL& manifest_url) { | 188 const WebURL& manifest_url) { |
| 189 if (was_select_cache_called_) |
| 190 return true; |
| 191 was_select_cache_called_ = true; |
| 192 |
| 184 GURL manifest_gurl(ClearUrlRef(manifest_url)); | 193 GURL manifest_gurl(ClearUrlRef(manifest_url)); |
| 185 | 194 |
| 186 // 6.9.6 The application cache selection algorithm | 195 // 6.9.6 The application cache selection algorithm |
| 187 // Check for new 'master' entries. | 196 // Check for new 'master' entries. |
| 188 if (document_response_.appCacheID() == kNoCacheId) { | 197 if (document_response_.appCacheID() == kNoCacheId) { |
| 189 if (is_scheme_supported_ && is_get_method_ && | 198 if (is_scheme_supported_ && is_get_method_ && |
| 190 (manifest_gurl.GetOrigin() == document_url_.GetOrigin())) { | 199 (manifest_gurl.GetOrigin() == document_url_.GetOrigin())) { |
| 191 status_ = CHECKING; | 200 status_ = CHECKING; |
| 192 is_new_master_entry_ = YES; | 201 is_new_master_entry_ = YES; |
| 193 } else { | 202 } else { |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 web_resources[i].isExplicit = resource_infos[i].is_explicit; | 302 web_resources[i].isExplicit = resource_infos[i].is_explicit; |
| 294 web_resources[i].isManifest = resource_infos[i].is_manifest; | 303 web_resources[i].isManifest = resource_infos[i].is_manifest; |
| 295 web_resources[i].isForeign = resource_infos[i].is_foreign; | 304 web_resources[i].isForeign = resource_infos[i].is_foreign; |
| 296 web_resources[i].isFallback = resource_infos[i].is_fallback; | 305 web_resources[i].isFallback = resource_infos[i].is_fallback; |
| 297 web_resources[i].url = resource_infos[i].url; | 306 web_resources[i].url = resource_infos[i].url; |
| 298 } | 307 } |
| 299 resources->swap(web_resources); | 308 resources->swap(web_resources); |
| 300 } | 309 } |
| 301 | 310 |
| 302 } // appcache namespace | 311 } // appcache namespace |
| OLD | NEW |