| Index: webkit/appcache/appcache_service.cc
|
| ===================================================================
|
| --- webkit/appcache/appcache_service.cc (revision 71705)
|
| +++ webkit/appcache/appcache_service.cc (working copy)
|
| @@ -8,6 +8,7 @@
|
| #include "base/message_loop.h"
|
| #include "base/stl_util-inl.h"
|
| #include "webkit/appcache/appcache_backend_impl.h"
|
| +#include "webkit/appcache/appcache_entry.h"
|
| #include "webkit/appcache/appcache_storage_impl.h"
|
|
|
| namespace appcache {
|
| @@ -60,6 +61,43 @@
|
| service_ = NULL;
|
| }
|
|
|
| +// CanHandleOfflineHelper -------
|
| +
|
| +class AppCacheService::CanHandleOfflineHelper : AsyncHelper {
|
| + public:
|
| + CanHandleOfflineHelper(
|
| + AppCacheService* service, const GURL& url,
|
| + net::CompletionCallback* callback)
|
| + : AsyncHelper(service, callback), url_(url) {
|
| + }
|
| +
|
| + virtual void Start() {
|
| + service_->storage()->FindResponseForMainRequest(url_, this);
|
| + }
|
| +
|
| + private:
|
| + // AppCacheStorage::Delegate override
|
| + virtual void OnMainResponseFound(
|
| + const GURL& url, const AppCacheEntry& entry,
|
| + const GURL& fallback_url, const AppCacheEntry& fallback_entry,
|
| + int64 cache_id, const GURL& mainfest_url,
|
| + bool was_blocked_by_policy);
|
| +
|
| + GURL url_;
|
| + DISALLOW_COPY_AND_ASSIGN(CanHandleOfflineHelper);
|
| +};
|
| +
|
| +void AppCacheService::CanHandleOfflineHelper::OnMainResponseFound(
|
| + const GURL& url, const AppCacheEntry& entry,
|
| + const GURL& fallback_url, const AppCacheEntry& fallback_entry,
|
| + int64 cache_id, const GURL& mainfest_url,
|
| + bool was_blocked_by_policy) {
|
| + bool can = !was_blocked_by_policy &&
|
| + (entry.has_response_id() || fallback_entry.has_response_id());
|
| + CallCallback(can ? net::OK : net::ERR_FAILED);
|
| + delete this;
|
| +}
|
| +
|
| // DeleteHelper -------
|
|
|
| class AppCacheService::DeleteHelper : public AsyncHelper {
|
| @@ -82,6 +120,7 @@
|
| appcache::AppCacheGroup* group, bool success);
|
|
|
| GURL manifest_url_;
|
| + DISALLOW_COPY_AND_ASSIGN(DeleteHelper);
|
| };
|
|
|
| void AppCacheService::DeleteHelper::OnGroupLoaded(
|
| @@ -121,6 +160,7 @@
|
| virtual void OnAllInfo(AppCacheInfoCollection* collection);
|
|
|
| scoped_refptr<AppCacheInfoCollection> collection_;
|
| + DISALLOW_COPY_AND_ASSIGN(GetInfoHelper);
|
| };
|
|
|
| void AppCacheService::GetInfoHelper::OnAllInfo(
|
| @@ -155,6 +195,14 @@
|
| storage_.reset(storage);
|
| }
|
|
|
| +void AppCacheService::CanHandleMainResourceOffline(
|
| + const GURL& url,
|
| + net::CompletionCallback* callback) {
|
| + CanHandleOfflineHelper* helper =
|
| + new CanHandleOfflineHelper(this, url, callback);
|
| + helper->Start();
|
| +}
|
| +
|
| void AppCacheService::GetAllAppCacheInfo(AppCacheInfoCollection* collection,
|
| net::CompletionCallback* callback) {
|
| DCHECK(collection);
|
|
|