Revert of Roll Clang 218707:220284 (+cherry-picks of 220340, 220403 and 220407) ...
[chromium-blink-merge.git] / content / common / appcache_interfaces.h
blob7199fbb13303ba81a300650c81ce1e7ff1294be3
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_COMMON_APPCACHE_APPCACHE_INTERFACES_H_
6 #define CONTENT_COMMON_APPCACHE_APPCACHE_INTERFACES_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/files/file_path.h"
12 #include "content/public/common/appcache_info.h"
14 namespace net {
15 class URLRequest;
18 namespace content {
20 // Defines constants, types, and abstract classes used in the main
21 // process and in child processes.
23 enum AppCacheEventID {
24 APPCACHE_CHECKING_EVENT,
25 APPCACHE_ERROR_EVENT,
26 APPCACHE_NO_UPDATE_EVENT,
27 APPCACHE_DOWNLOADING_EVENT,
28 APPCACHE_PROGRESS_EVENT,
29 APPCACHE_UPDATE_READY_EVENT,
30 APPCACHE_CACHED_EVENT,
31 APPCACHE_OBSOLETE_EVENT,
32 APPCACHE_EVENT_ID_LAST = APPCACHE_OBSOLETE_EVENT
35 // Temporarily renumber them in wierd way, to help remove LOG_TIP from WebKit
36 enum AppCacheLogLevel {
37 APPCACHE_LOG_DEBUG = 4,
38 APPCACHE_LOG_INFO = 1,
39 APPCACHE_LOG_WARNING = 2,
40 APPCACHE_LOG_ERROR = 3,
43 enum AppCacheNamespaceType {
44 APPCACHE_FALLBACK_NAMESPACE,
45 APPCACHE_INTERCEPT_NAMESPACE,
46 APPCACHE_NETWORK_NAMESPACE
49 enum AppCacheErrorReason {
50 APPCACHE_MANIFEST_ERROR,
51 APPCACHE_SIGNATURE_ERROR,
52 APPCACHE_RESOURCE_ERROR,
53 APPCACHE_CHANGED_ERROR,
54 APPCACHE_ABORT_ERROR,
55 APPCACHE_QUOTA_ERROR,
56 APPCACHE_POLICY_ERROR,
57 APPCACHE_UNKNOWN_ERROR,
58 APPCACHE_ERROR_REASON_LAST = APPCACHE_UNKNOWN_ERROR
61 // Type to hold information about a single appcache resource.
62 struct CONTENT_EXPORT AppCacheResourceInfo {
63 AppCacheResourceInfo();
64 ~AppCacheResourceInfo();
66 GURL url;
67 int64 size;
68 bool is_master;
69 bool is_manifest;
70 bool is_intercept;
71 bool is_fallback;
72 bool is_foreign;
73 bool is_explicit;
74 int64 response_id;
77 struct CONTENT_EXPORT AppCacheErrorDetails {
78 AppCacheErrorDetails();
79 AppCacheErrorDetails(std::string message,
80 AppCacheErrorReason reason,
81 GURL url,
82 int status,
83 bool is_cross_origin);
84 ~AppCacheErrorDetails();
86 std::string message;
87 AppCacheErrorReason reason;
88 GURL url;
89 int status;
90 bool is_cross_origin;
93 typedef std::vector<AppCacheResourceInfo> AppCacheResourceInfoVector;
95 struct CONTENT_EXPORT AppCacheNamespace {
96 AppCacheNamespace(); // Type is APPCACHE_FALLBACK_NAMESPACE by default.
97 AppCacheNamespace(AppCacheNamespaceType type, const GURL& url,
98 const GURL& target, bool is_pattern);
99 AppCacheNamespace(AppCacheNamespaceType type, const GURL& url,
100 const GURL& target, bool is_pattern, bool is_executable);
101 ~AppCacheNamespace();
103 bool IsMatch(const GURL& url) const;
105 AppCacheNamespaceType type;
106 GURL namespace_url;
107 GURL target_url;
108 bool is_pattern;
109 bool is_executable;
112 typedef std::vector<AppCacheNamespace> AppCacheNamespaceVector;
114 // Interface used by backend (browser-process) to talk to frontend (renderer).
115 class CONTENT_EXPORT AppCacheFrontend {
116 public:
117 virtual void OnCacheSelected(
118 int host_id, const AppCacheInfo& info) = 0;
119 virtual void OnStatusChanged(const std::vector<int>& host_ids,
120 AppCacheStatus status) = 0;
121 virtual void OnEventRaised(const std::vector<int>& host_ids,
122 AppCacheEventID event_id) = 0;
123 virtual void OnProgressEventRaised(const std::vector<int>& host_ids,
124 const GURL& url,
125 int num_total, int num_complete) = 0;
126 virtual void OnErrorEventRaised(
127 const std::vector<int>& host_ids,
128 const AppCacheErrorDetails& details) = 0;
129 virtual void OnContentBlocked(int host_id,
130 const GURL& manifest_url) = 0;
131 virtual void OnLogMessage(int host_id, AppCacheLogLevel log_level,
132 const std::string& message) = 0;
133 virtual ~AppCacheFrontend() {}
136 // Interface used by frontend (renderer) to talk to backend (browser-process).
137 class CONTENT_EXPORT AppCacheBackend {
138 public:
139 virtual void RegisterHost(int host_id) = 0;
140 virtual void UnregisterHost(int host_id) = 0;
141 virtual void SetSpawningHostId(int host_id, int spawning_host_id) = 0;
142 virtual void SelectCache(int host_id,
143 const GURL& document_url,
144 const int64 cache_document_was_loaded_from,
145 const GURL& manifest_url) = 0;
146 virtual void SelectCacheForWorker(
147 int host_id,
148 int parent_process_id,
149 int parent_host_id) = 0;
150 virtual void SelectCacheForSharedWorker(
151 int host_id,
152 int64 appcache_id) = 0;
153 virtual void MarkAsForeignEntry(int host_id, const GURL& document_url,
154 int64 cache_document_was_loaded_from) = 0;
155 virtual AppCacheStatus GetStatus(int host_id) = 0;
156 virtual bool StartUpdate(int host_id) = 0;
157 virtual bool SwapCache(int host_id) = 0;
158 virtual void GetResourceList(
159 int host_id, std::vector<AppCacheResourceInfo>* resource_infos) = 0;
161 protected:
162 virtual ~AppCacheBackend() {}
165 // Useful string constants.
166 // Note: These are also defined elsewhere in the chrome code base in
167 // url_contants.h .cc, however the content library can not have
168 // any dependencies on the chrome library, so we can't use them in here.
169 CONTENT_EXPORT extern const char kHttpScheme[];
170 CONTENT_EXPORT extern const char kHttpsScheme[];
171 CONTENT_EXPORT extern const char kHttpGETMethod[];
172 CONTENT_EXPORT extern const char kHttpHEADMethod[];
174 // CommandLine flag to turn this experimental feature on.
175 CONTENT_EXPORT extern const char kEnableExecutableHandlers[];
177 CONTENT_EXPORT bool IsSchemeSupportedForAppCache(const GURL& url);
178 CONTENT_EXPORT bool IsMethodSupportedForAppCache(
179 const std::string& method);
180 CONTENT_EXPORT bool IsSchemeAndMethodSupportedForAppCache(
181 const net::URLRequest* request);
183 CONTENT_EXPORT extern const base::FilePath::CharType
184 kAppCacheDatabaseName[];
186 } // namespace
188 #endif // CONTENT_COMMON_APPCACHE_APPCACHE_INTERFACES_H_