Index: webkit/renderer/appcache/web_application_cache_host_impl.cc |
diff --git a/webkit/renderer/appcache/web_application_cache_host_impl.cc b/webkit/renderer/appcache/web_application_cache_host_impl.cc |
deleted file mode 100644 |
index db67df5720b01a6ce7bbd85e733aabc42a65782b..0000000000000000000000000000000000000000 |
--- a/webkit/renderer/appcache/web_application_cache_host_impl.cc |
+++ /dev/null |
@@ -1,328 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "webkit/renderer/appcache/web_application_cache_host_impl.h" |
- |
-#include "base/compiler_specific.h" |
-#include "base/id_map.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/stringprintf.h" |
-#include "third_party/WebKit/public/web/WebDataSource.h" |
-#include "third_party/WebKit/public/web/WebFrame.h" |
-#include "third_party/WebKit/public/platform/WebURL.h" |
-#include "third_party/WebKit/public/platform/WebURLRequest.h" |
-#include "third_party/WebKit/public/platform/WebURLResponse.h" |
- |
-using WebKit::WebApplicationCacheHost; |
-using WebKit::WebApplicationCacheHostClient; |
-using WebKit::WebDataSource; |
-using WebKit::WebFrame; |
-using WebKit::WebURLRequest; |
-using WebKit::WebURL; |
-using WebKit::WebURLResponse; |
-using WebKit::WebVector; |
- |
-namespace appcache { |
- |
-namespace { |
- |
-// Note: the order of the elements in this array must match those |
-// of the EventID enum in appcache_interfaces.h. |
-const char* kEventNames[] = { |
- "Checking", "Error", "NoUpdate", "Downloading", "Progress", |
- "UpdateReady", "Cached", "Obsolete" |
-}; |
- |
-typedef IDMap<WebApplicationCacheHostImpl> HostsMap; |
- |
-HostsMap* all_hosts() { |
- static HostsMap* map = new HostsMap; |
- return map; |
-} |
- |
-GURL ClearUrlRef(const GURL& url) { |
- if (!url.has_ref()) |
- return url; |
- GURL::Replacements replacements; |
- replacements.ClearRef(); |
- return url.ReplaceComponents(replacements); |
-} |
- |
-} // anon namespace |
- |
-WebApplicationCacheHostImpl* WebApplicationCacheHostImpl::FromId(int id) { |
- return all_hosts()->Lookup(id); |
-} |
- |
-WebApplicationCacheHostImpl* WebApplicationCacheHostImpl::FromFrame( |
- const WebFrame* frame) { |
- if (!frame) |
- return NULL; |
- WebDataSource* data_source = frame->dataSource(); |
- if (!data_source) |
- return NULL; |
- return static_cast<WebApplicationCacheHostImpl*> |
- (data_source->applicationCacheHost()); |
-} |
- |
-WebApplicationCacheHostImpl::WebApplicationCacheHostImpl( |
- WebApplicationCacheHostClient* client, |
- AppCacheBackend* backend) |
- : client_(client), |
- backend_(backend), |
- host_id_(all_hosts()->Add(this)), |
- status_(UNCACHED), |
- is_scheme_supported_(false), |
- is_get_method_(false), |
- is_new_master_entry_(MAYBE), |
- was_select_cache_called_(false) { |
- DCHECK(client && backend && (host_id_ != kNoHostId)); |
- |
- backend_->RegisterHost(host_id_); |
-} |
- |
-WebApplicationCacheHostImpl::~WebApplicationCacheHostImpl() { |
- backend_->UnregisterHost(host_id_); |
- all_hosts()->Remove(host_id_); |
-} |
- |
-void WebApplicationCacheHostImpl::OnCacheSelected( |
- const appcache::AppCacheInfo& info) { |
- cache_info_ = info; |
- client_->didChangeCacheAssociation(); |
-} |
- |
-void WebApplicationCacheHostImpl::OnStatusChanged(appcache::Status status) { |
- // TODO(michaeln): delete me, not used |
-} |
- |
-void WebApplicationCacheHostImpl::OnEventRaised(appcache::EventID event_id) { |
- DCHECK(event_id != PROGRESS_EVENT); // See OnProgressEventRaised. |
- DCHECK(event_id != ERROR_EVENT); // See OnErrorEventRaised. |
- |
- // Emit logging output prior to calling out to script as we can get |
- // deleted within the script event handler. |
- const char* kFormatString = "Application Cache %s event"; |
- std::string message = base::StringPrintf(kFormatString, |
- kEventNames[event_id]); |
- OnLogMessage(LOG_INFO, message); |
- |
- switch (event_id) { |
- case CHECKING_EVENT: |
- status_ = CHECKING; |
- break; |
- case DOWNLOADING_EVENT: |
- status_ = DOWNLOADING; |
- break; |
- case UPDATE_READY_EVENT: |
- status_ = UPDATE_READY; |
- break; |
- case CACHED_EVENT: |
- case NO_UPDATE_EVENT: |
- status_ = IDLE; |
- break; |
- case OBSOLETE_EVENT: |
- status_ = OBSOLETE; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- |
- client_->notifyEventListener(static_cast<EventID>(event_id)); |
-} |
- |
-void WebApplicationCacheHostImpl::OnProgressEventRaised( |
- const GURL& url, int num_total, int num_complete) { |
- // Emit logging output prior to calling out to script as we can get |
- // deleted within the script event handler. |
- const char* kFormatString = "Application Cache Progress event (%d of %d) %s"; |
- std::string message = base::StringPrintf(kFormatString, num_complete, |
- num_total, url.spec().c_str()); |
- OnLogMessage(LOG_INFO, message); |
- status_ = DOWNLOADING; |
- client_->notifyProgressEventListener(url, num_total, num_complete); |
-} |
- |
-void WebApplicationCacheHostImpl::OnErrorEventRaised( |
- const std::string& message) { |
- // Emit logging output prior to calling out to script as we can get |
- // deleted within the script event handler. |
- const char* kFormatString = "Application Cache Error event: %s"; |
- std::string full_message = base::StringPrintf(kFormatString, |
- message.c_str()); |
- OnLogMessage(LOG_ERROR, full_message); |
- |
- status_ = cache_info_.is_complete ? IDLE : UNCACHED; |
- client_->notifyEventListener(static_cast<EventID>(ERROR_EVENT)); |
-} |
- |
-void WebApplicationCacheHostImpl::willStartMainResourceRequest( |
- WebURLRequest& request, const WebFrame* frame) { |
- request.setAppCacheHostID(host_id_); |
- |
- original_main_resource_url_ = ClearUrlRef(request.url()); |
- |
- std::string method = request.httpMethod().utf8(); |
- is_get_method_ = (method == kHttpGETMethod); |
- DCHECK(method == StringToUpperASCII(method)); |
- |
- if (frame) { |
- const WebFrame* spawning_frame = frame->parent(); |
- if (!spawning_frame) |
- spawning_frame = frame->opener(); |
- if (!spawning_frame) |
- spawning_frame = frame; |
- |
- WebApplicationCacheHostImpl* spawning_host = FromFrame(spawning_frame); |
- if (spawning_host && (spawning_host != this) && |
- (spawning_host->status_ != UNCACHED)) { |
- backend_->SetSpawningHostId(host_id_, spawning_host->host_id()); |
- } |
- } |
-} |
- |
-void WebApplicationCacheHostImpl::willStartSubResourceRequest( |
- WebURLRequest& request) { |
- request.setAppCacheHostID(host_id_); |
-} |
- |
-void WebApplicationCacheHostImpl::selectCacheWithoutManifest() { |
- if (was_select_cache_called_) |
- return; |
- was_select_cache_called_ = true; |
- |
- status_ = (document_response_.appCacheID() == kNoCacheId) ? |
- UNCACHED : CHECKING; |
- is_new_master_entry_ = NO; |
- backend_->SelectCache(host_id_, document_url_, |
- document_response_.appCacheID(), |
- GURL()); |
-} |
- |
-bool WebApplicationCacheHostImpl::selectCacheWithManifest( |
- const WebURL& manifest_url) { |
- if (was_select_cache_called_) |
- return true; |
- was_select_cache_called_ = true; |
- |
- GURL manifest_gurl(ClearUrlRef(manifest_url)); |
- |
- // 6.9.6 The application cache selection algorithm |
- // Check for new 'master' entries. |
- if (document_response_.appCacheID() == kNoCacheId) { |
- if (is_scheme_supported_ && is_get_method_ && |
- (manifest_gurl.GetOrigin() == document_url_.GetOrigin())) { |
- status_ = CHECKING; |
- is_new_master_entry_ = YES; |
- } else { |
- status_ = UNCACHED; |
- is_new_master_entry_ = NO; |
- manifest_gurl = GURL(); |
- } |
- backend_->SelectCache(host_id_, document_url_, |
- kNoCacheId, manifest_gurl); |
- return true; |
- } |
- |
- DCHECK_EQ(NO, is_new_master_entry_); |
- |
- // 6.9.6 The application cache selection algorithm |
- // Check for 'foreign' entries. |
- GURL document_manifest_gurl(document_response_.appCacheManifestURL()); |
- if (document_manifest_gurl != manifest_gurl) { |
- backend_->MarkAsForeignEntry(host_id_, document_url_, |
- document_response_.appCacheID()); |
- status_ = UNCACHED; |
- return false; // the navigation will be restarted |
- } |
- |
- status_ = CHECKING; |
- |
- // Its a 'master' entry thats already in the cache. |
- backend_->SelectCache(host_id_, document_url_, |
- document_response_.appCacheID(), |
- manifest_gurl); |
- return true; |
-} |
- |
-void WebApplicationCacheHostImpl::didReceiveResponseForMainResource( |
- const WebURLResponse& response) { |
- document_response_ = response; |
- document_url_ = ClearUrlRef(document_response_.url()); |
- if (document_url_ != original_main_resource_url_) |
- is_get_method_ = true; // A redirect was involved. |
- original_main_resource_url_ = GURL(); |
- |
- is_scheme_supported_ = IsSchemeSupported(document_url_); |
- if ((document_response_.appCacheID() != kNoCacheId) || |
- !is_scheme_supported_ || !is_get_method_) |
- is_new_master_entry_ = NO; |
-} |
- |
-void WebApplicationCacheHostImpl::didReceiveDataForMainResource( |
- const char* data, int len) { |
- if (is_new_master_entry_ == NO) |
- return; |
- // TODO(michaeln): write me |
-} |
- |
-void WebApplicationCacheHostImpl::didFinishLoadingMainResource(bool success) { |
- if (is_new_master_entry_ == NO) |
- return; |
- // TODO(michaeln): write me |
-} |
- |
-WebApplicationCacheHost::Status WebApplicationCacheHostImpl::status() { |
- return static_cast<WebApplicationCacheHost::Status>(status_); |
-} |
- |
-bool WebApplicationCacheHostImpl::startUpdate() { |
- if (!backend_->StartUpdate(host_id_)) |
- return false; |
- if (status_ == IDLE || status_ == UPDATE_READY) |
- status_ = CHECKING; |
- else |
- status_ = backend_->GetStatus(host_id_); |
- return true; |
-} |
- |
-bool WebApplicationCacheHostImpl::swapCache() { |
- if (!backend_->SwapCache(host_id_)) |
- return false; |
- status_ = backend_->GetStatus(host_id_); |
- return true; |
-} |
- |
-void WebApplicationCacheHostImpl::getAssociatedCacheInfo( |
- WebApplicationCacheHost::CacheInfo* info) { |
- info->manifestURL = cache_info_.manifest_url; |
- if (!cache_info_.is_complete) |
- return; |
- info->creationTime = cache_info_.creation_time.ToDoubleT(); |
- info->updateTime = cache_info_.last_update_time.ToDoubleT(); |
- info->totalSize = cache_info_.size; |
-} |
- |
-void WebApplicationCacheHostImpl::getResourceList( |
- WebVector<ResourceInfo>* resources) { |
- if (!cache_info_.is_complete) |
- return; |
- std::vector<AppCacheResourceInfo> resource_infos; |
- backend_->GetResourceList(host_id_, &resource_infos); |
- |
- WebVector<ResourceInfo> web_resources(resource_infos.size()); |
- for (size_t i = 0; i < resource_infos.size(); ++i) { |
- web_resources[i].size = resource_infos[i].size; |
- web_resources[i].isMaster = resource_infos[i].is_master; |
- web_resources[i].isExplicit = resource_infos[i].is_explicit; |
- web_resources[i].isManifest = resource_infos[i].is_manifest; |
- web_resources[i].isForeign = resource_infos[i].is_foreign; |
- web_resources[i].isFallback = resource_infos[i].is_fallback; |
- web_resources[i].url = resource_infos[i].url; |
- } |
- resources->swap(web_resources); |
-} |
- |
-} // appcache namespace |