// 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/appcache/appcache_interfaces.h" #include "googleurl/src/gurl.h" #include "net/url_request/url_request.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebApplicationCacheHost.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h" using WebKit::WebApplicationCacheHost; using WebKit::WebConsoleMessage; namespace appcache { const char kHttpScheme[] = "http"; const char kHttpsScheme[] = "https"; const char kHttpGETMethod[] = "GET"; const char kHttpHEADMethod[] = "HEAD"; const base::FilePath::CharType kAppCacheDatabaseName[] = FILE_PATH_LITERAL("Index"); AppCacheInfo::AppCacheInfo() : cache_id(kNoCacheId), group_id(0), status(UNCACHED), size(0), is_complete(false) { } AppCacheInfo::~AppCacheInfo() { } AppCacheResourceInfo::AppCacheResourceInfo() : url(), size(0), is_master(false), is_manifest(false), is_intercept(false), is_fallback(false), is_foreign(false), is_explicit(false), response_id(kNoResponseId) { } AppCacheResourceInfo::~AppCacheResourceInfo() { } Namespace::Namespace() : type(FALLBACK_NAMESPACE) { } Namespace::Namespace(NamespaceType type, const GURL& url, const GURL& target) : type(type), namespace_url(url), target_url(target) { } Namespace::~Namespace() { } bool IsSchemeSupported(const GURL& url) { bool supported = url.SchemeIs(kHttpScheme) || url.SchemeIs(kHttpsScheme); #ifndef NDEBUG // TODO(michaeln): It would be really nice if this could optionally work for // file and filesystem urls too to help web developers experiment and test // their apps, perhaps enabled via a cmd line flag or some other developer // tool setting. Unfortunately file scheme net::URLRequests don't produce the // same signalling (200 response codes, headers) as http URLRequests, so this // doesn't work just yet. // supported |= url.SchemeIsFile(); #endif return supported; } bool IsMethodSupported(const std::string& method) { return (method == kHttpGETMethod) || (method == kHttpHEADMethod); } bool IsSchemeAndMethodSupported(const net::URLRequest* request) { return IsSchemeSupported(request->url()) && IsMethodSupported(request->method()); } // Ensure that enum values never get out of sync with the // ones declared for use within the WebKit api COMPILE_ASSERT((int)WebApplicationCacheHost::Uncached == (int)UNCACHED, Uncached); COMPILE_ASSERT((int)WebApplicationCacheHost::Idle == (int)IDLE, Idle); COMPILE_ASSERT((int)WebApplicationCacheHost::Checking == (int)CHECKING, Checking); COMPILE_ASSERT((int)WebApplicationCacheHost::Downloading == (int)DOWNLOADING, Downloading); COMPILE_ASSERT((int)WebApplicationCacheHost::UpdateReady == (int)UPDATE_READY, UpdateReady); COMPILE_ASSERT((int)WebApplicationCacheHost::Obsolete == (int)OBSOLETE, Obsolete); COMPILE_ASSERT((int)WebApplicationCacheHost::CheckingEvent == (int)CHECKING_EVENT, CheckingEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::ErrorEvent == (int)ERROR_EVENT, ErrorEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::NoUpdateEvent == (int)NO_UPDATE_EVENT, NoUpdateEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::DownloadingEvent == (int)DOWNLOADING_EVENT, DownloadingEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::ProgressEvent == (int)PROGRESS_EVENT, ProgressEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::UpdateReadyEvent == (int)UPDATE_READY_EVENT, UpdateReadyEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::CachedEvent == (int)CACHED_EVENT, CachedEvent); COMPILE_ASSERT((int)WebApplicationCacheHost::ObsoleteEvent == (int)OBSOLETE_EVENT, ObsoleteEvent); COMPILE_ASSERT((int)WebConsoleMessage::LevelTip == (int)LOG_TIP, LevelTip); COMPILE_ASSERT((int)WebConsoleMessage::LevelLog == (int)LOG_INFO, LevelLog); COMPILE_ASSERT((int)WebConsoleMessage::LevelWarning == (int)LOG_WARNING, LevelWarning); COMPILE_ASSERT((int)WebConsoleMessage::LevelError == (int)LOG_ERROR, LevelError); } // namespace appcache