summaryrefslogtreecommitdiffstats
path: root/webkit/appcache/appcache_service.h
diff options
context:
space:
mode:
authormichaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-15 20:00:11 +0000
committermichaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-15 20:00:11 +0000
commit6c270d442c1ee1a526538b8530e6198a9ada90e4 (patch)
tree5e5ccfbcd54cc59bbb250a233cf128df9dac5fab /webkit/appcache/appcache_service.h
parente10d86c2067313fa2cdc8684b5f0904b0d8d985e (diff)
downloadchromium_src-6c270d442c1ee1a526538b8530e6198a9ada90e4.zip
chromium_src-6c270d442c1ee1a526538b8530e6198a9ada90e4.tar.gz
chromium_src-6c270d442c1ee1a526538b8530e6198a9ada90e4.tar.bz2
1) Tell the AppCacheService which request context to use when fetching resources for updates. Done for both chrome and test_shell. The service does not yet take a reference to that context, because the extra reference apparently gives some tests grief.
2) Added methods to generate new storage ids for different object types on the IO thread. BUG=none TEST=none Review URL: http://codereview.chromium.org/195077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26253 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/appcache/appcache_service.h')
-rw-r--r--webkit/appcache/appcache_service.h32
1 files changed, 30 insertions, 2 deletions
diff --git a/webkit/appcache/appcache_service.h b/webkit/appcache/appcache_service.h
index bc8bee8..0ccad80 100644
--- a/webkit/appcache/appcache_service.h
+++ b/webkit/appcache/appcache_service.h
@@ -11,6 +11,8 @@
#include "base/hash_tables.h"
#include "base/file_path.h"
+#include "base/ref_counted.h"
+#include "net/url_request/url_request_context.h"
#include "googleurl/src/gurl.h"
namespace appcache {
@@ -20,13 +22,24 @@ class AppCacheBackendImpl;
class AppCacheGroup;
// Class that manages the application cache service. Sends notifications
-// to many frontends. One instance per user-profile.
+// to many frontends. One instance per user-profile. Each instance has
+// exclusive access to it's cache_directory on disk.
class AppCacheService {
public:
+ AppCacheService();
virtual ~AppCacheService();
void Initialize(const FilePath& cache_directory);
+ // Context for use during cache updates, should only be accessed
+ // on the IO thread.
+ URLRequestContext* request_context() { return request_context_.get(); }
+ void set_request_context(URLRequestContext* context) {
+ // TODO(michaeln): need to look into test failures that occur
+ // when we take this reference? Stubbing out for now.
+ // request_context_ = context;
+ }
+
// TODO(jennb): API to set service settings, like file paths for storage
// track which processes are using this appcache service
@@ -53,6 +66,12 @@ class AppCacheService {
return (it != groups_.end()) ? it->second : NULL;
}
+ // The service generates unique storage ids for different object types.
+ int64 NewCacheId() { return ++last_cache_id_; }
+ int64 NewGroupId() { return ++last_group_id_; }
+ int64 NewEntryId() { return ++last_entry_id_; }
+ int64 NewResponseId() { return ++last_response_id_; }
+
private:
// In-memory representation of stored appcache data. Represents a subset
// of the appcache database currently in use.
@@ -61,16 +80,25 @@ class AppCacheService {
CacheMap caches_;
GroupMap groups_;
+ // The last storage id used for different object types.
+ int64 last_cache_id_;
+ int64 last_group_id_;
+ int64 last_entry_id_;
+ int64 last_response_id_;
+
// Track current processes. One 'backend' per child process.
typedef std::map<int, AppCacheBackendImpl*> BackendMap;
BackendMap backends_;
FilePath cache_directory_;
+
+ // Context for use during cache updates.
+ scoped_refptr<URLRequestContext> request_context_;
+
// TODO(jennb): info about appcache storage
// AppCacheDatabase db_;
// DiskCache response_storage_;
- // TODO(jennb): service settings: e.g. max size of app cache?
// TODO(jennb): service state: e.g. reached quota?
};