| // 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. |
| |
| #ifndef WEBKIT_COMMON_APPCACHE_APPCACHE_INTERFACES_H_ |
| #define WEBKIT_COMMON_APPCACHE_APPCACHE_INTERFACES_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/basictypes.h" |
| #include "base/files/file_path.h" |
| #include "base/time/time.h" |
| #include "url/gurl.h" |
| #include "webkit/common/webkit_storage_common_export.h" |
| |
| namespace net { |
| class URLRequest; |
| } |
| |
| namespace appcache { |
| |
| // Defines constants, types, and abstract classes used in the main |
| // process and in child processes. |
| |
| static const int kNoHostId = 0; |
| static const int64 kNoCacheId = 0; |
| static const int64 kNoResponseId = 0; |
| static const int64 kUnknownCacheId = -1; |
| |
| enum Status { |
| UNCACHED, |
| IDLE, |
| CHECKING, |
| DOWNLOADING, |
| UPDATE_READY, |
| OBSOLETE |
| }; |
| |
| enum EventID { |
| CHECKING_EVENT, |
| ERROR_EVENT, |
| NO_UPDATE_EVENT, |
| DOWNLOADING_EVENT, |
| PROGRESS_EVENT, |
| UPDATE_READY_EVENT, |
| CACHED_EVENT, |
| OBSOLETE_EVENT |
| }; |
| |
| // Temporarily renumber them in wierd way, to help remove LOG_TIP from WebKit |
| enum LogLevel { |
| LOG_DEBUG = 4, |
| LOG_INFO = 1, |
| LOG_WARNING = 2, |
| LOG_ERROR = 3, |
| }; |
| |
| enum NamespaceType { |
| FALLBACK_NAMESPACE, |
| INTERCEPT_NAMESPACE, |
| NETWORK_NAMESPACE |
| }; |
| |
| struct WEBKIT_STORAGE_COMMON_EXPORT AppCacheInfo { |
| AppCacheInfo(); |
| ~AppCacheInfo(); |
| |
| GURL manifest_url; |
| base::Time creation_time; |
| base::Time last_update_time; |
| base::Time last_access_time; |
| int64 cache_id; |
| int64 group_id; |
| Status status; |
| int64 size; |
| bool is_complete; |
| }; |
| |
| typedef std::vector<AppCacheInfo> AppCacheInfoVector; |
| |
| // Type to hold information about a single appcache resource. |
| struct WEBKIT_STORAGE_COMMON_EXPORT AppCacheResourceInfo { |
| AppCacheResourceInfo(); |
| ~AppCacheResourceInfo(); |
| |
| GURL url; |
| int64 size; |
| bool is_master; |
| bool is_manifest; |
| bool is_intercept; |
| bool is_fallback; |
| bool is_foreign; |
| bool is_explicit; |
| int64 response_id; |
| }; |
| |
| typedef std::vector<AppCacheResourceInfo> AppCacheResourceInfoVector; |
| |
| struct WEBKIT_STORAGE_COMMON_EXPORT Namespace { |
| Namespace(); // Type is set to FALLBACK_NAMESPACE by default. |
| Namespace(NamespaceType type, const GURL& url, const GURL& target, |
| bool is_pattern); |
| Namespace(NamespaceType type, const GURL& url, const GURL& target, |
| bool is_pattern, bool is_executable); |
| ~Namespace(); |
| |
| bool IsMatch(const GURL& url) const; |
| |
| NamespaceType type; |
| GURL namespace_url; |
| GURL target_url; |
| bool is_pattern; |
| bool is_executable; |
| }; |
| |
| typedef std::vector<Namespace> NamespaceVector; |
| |
| // Interface used by backend (browser-process) to talk to frontend (renderer). |
| class WEBKIT_STORAGE_COMMON_EXPORT AppCacheFrontend { |
| public: |
| virtual void OnCacheSelected( |
| int host_id, const appcache::AppCacheInfo& info) = 0; |
| virtual void OnStatusChanged(const std::vector<int>& host_ids, |
| Status status) = 0; |
| virtual void OnEventRaised(const std::vector<int>& host_ids, |
| EventID event_id) = 0; |
| virtual void OnProgressEventRaised(const std::vector<int>& host_ids, |
| const GURL& url, |
| int num_total, int num_complete) = 0; |
| virtual void OnErrorEventRaised(const std::vector<int>& host_ids, |
| const std::string& message) = 0; |
| virtual void OnContentBlocked(int host_id, |
| const GURL& manifest_url) = 0; |
| virtual void OnLogMessage(int host_id, LogLevel log_level, |
| const std::string& message) = 0; |
| virtual ~AppCacheFrontend() {} |
| }; |
| |
| // Interface used by frontend (renderer) to talk to backend (browser-process). |
| class WEBKIT_STORAGE_COMMON_EXPORT AppCacheBackend { |
| public: |
| virtual void RegisterHost(int host_id) = 0; |
| virtual void UnregisterHost(int host_id) = 0; |
| virtual void SetSpawningHostId(int host_id, int spawning_host_id) = 0; |
| virtual void SelectCache(int host_id, |
| const GURL& document_url, |
| const int64 cache_document_was_loaded_from, |
| const GURL& manifest_url) = 0; |
| virtual void SelectCacheForWorker( |
| int host_id, |
| int parent_process_id, |
| int parent_host_id) = 0; |
| virtual void SelectCacheForSharedWorker( |
| int host_id, |
| int64 appcache_id) = 0; |
| virtual void MarkAsForeignEntry(int host_id, const GURL& document_url, |
| int64 cache_document_was_loaded_from) = 0; |
| virtual Status GetStatus(int host_id) = 0; |
| virtual bool StartUpdate(int host_id) = 0; |
| virtual bool SwapCache(int host_id) = 0; |
| virtual void GetResourceList( |
| int host_id, std::vector<AppCacheResourceInfo>* resource_infos) = 0; |
| |
| protected: |
| virtual ~AppCacheBackend() {} |
| }; |
| |
| // Useful string constants. |
| // Note: These are also defined elsewhere in the chrome code base in |
| // url_contants.h .cc, however the appcache library doesn't not have |
| // any dependencies on the chrome library, so we can't use them in here. |
| WEBKIT_STORAGE_COMMON_EXPORT extern const char kHttpScheme[]; |
| WEBKIT_STORAGE_COMMON_EXPORT extern const char kHttpsScheme[]; |
| WEBKIT_STORAGE_COMMON_EXPORT extern const char kHttpGETMethod[]; |
| WEBKIT_STORAGE_COMMON_EXPORT extern const char kHttpHEADMethod[]; |
| |
| // CommandLine flag to turn this experimental feature on. |
| WEBKIT_STORAGE_COMMON_EXPORT extern const char kEnableExecutableHandlers[]; |
| |
| WEBKIT_STORAGE_COMMON_EXPORT bool IsSchemeSupported(const GURL& url); |
| WEBKIT_STORAGE_COMMON_EXPORT bool IsMethodSupported(const std::string& method); |
| WEBKIT_STORAGE_COMMON_EXPORT bool IsSchemeAndMethodSupported( |
| const net::URLRequest* request); |
| |
| WEBKIT_STORAGE_COMMON_EXPORT extern const base::FilePath::CharType |
| kAppCacheDatabaseName[]; |
| |
| } // namespace |
| |
| #endif // WEBKIT_COMMON_APPCACHE_APPCACHE_INTERFACES_H_ |