diff options
author | michaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 20:56:47 +0000 |
---|---|---|
committer | michaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 20:56:47 +0000 |
commit | ea2a7b919337fb796c8602f1701b60d8fa2d7f42 (patch) | |
tree | 61ab4cb64a4aa0c64e94a5280a7d7f4e35062855 /webkit/appcache/appcache_host.h | |
parent | c468f9498bcb426edb87cb803a03a63e793e8222 (diff) | |
download | chromium_src-ea2a7b919337fb796c8602f1701b60d8fa2d7f42.zip chromium_src-ea2a7b919337fb796c8602f1701b60d8fa2d7f42.tar.gz chromium_src-ea2a7b919337fb796c8602f1701b60d8fa2d7f42.tar.bz2 |
Select a more appropiate appcache based on the opener or the parent or the target frame of the new document. The change determines a 'preferred manifest url' in these cases:
* <iframe> loading, we prefer the parent frame's manifest url
* window.open() loading, we prefer the opener frame's manifest url
* href clicking to navigate a frame in place, we prefer the manifest url of the document in the frame when the navigation starts
BUG=68479
Review URL: http://codereview.chromium.org/6727006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81801 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/appcache/appcache_host.h')
-rw-r--r-- | webkit/appcache/appcache_host.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/webkit/appcache/appcache_host.h b/webkit/appcache/appcache_host.h index c449982..6f25a57 100644 --- a/webkit/appcache/appcache_host.h +++ b/webkit/appcache/appcache_host.h @@ -71,6 +71,22 @@ class AppCacheHost : public AppCacheStorage::Delegate, void SwapCacheWithCallback(SwapCacheCallback* callback, void* callback_param); + // Called prior to the main resource load. When the system contains multiple + // candidates for a main resource load, the appcache preferred by the host + // that created this host is used to break ties. + void SetSpawningHostId(int spawning_process_id, int spawning_host_id); + + // May return NULL if the spawning host context has been closed, or if a + // spawning host context was never identified. + const AppCacheHost* GetSpawningHost() const; + + const GURL& preferred_manifest_url() const { + return preferred_manifest_url_; + } + void set_preferred_manifest_url(const GURL& url) { + preferred_manifest_url_ = url; + } + // Support for loading resources out of the appcache. // May return NULL if the request isn't subject to retrieval from an appache. AppCacheRequestHandler* CreateRequestHandler( @@ -149,6 +165,13 @@ class AppCacheHost : public AppCacheStorage::Delegate, // Identifies the corresponding appcache host in the child process. int host_id_; + // Information about the host that created this one; the manifest + // preferred by our creator influences which cache our main resource + // should be loaded from. + int spawning_host_id_; + int spawning_process_id_; + GURL preferred_manifest_url_; + // Hosts for dedicated workers are special cased to shunt // request handling off to the dedicated worker's parent. // The scriptable api is not accessible in dedicated workers |