| Index: webkit/browser/appcache/appcache_host.h
|
| diff --git a/webkit/browser/appcache/appcache_host.h b/webkit/browser/appcache/appcache_host.h
|
| deleted file mode 100644
|
| index 0831f1571ccc1402a8c298999e447a27fc6f7399..0000000000000000000000000000000000000000
|
| --- a/webkit/browser/appcache/appcache_host.h
|
| +++ /dev/null
|
| @@ -1,338 +0,0 @@
|
| -// Copyright (c) 2011 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_BROWSER_APPCACHE_APPCACHE_HOST_H_
|
| -#define WEBKIT_BROWSER_APPCACHE_APPCACHE_HOST_H_
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/observer_list.h"
|
| -#include "url/gurl.h"
|
| -#include "webkit/browser/appcache/appcache_group.h"
|
| -#include "webkit/browser/appcache/appcache_service_impl.h"
|
| -#include "webkit/browser/appcache/appcache_storage.h"
|
| -#include "webkit/browser/webkit_storage_browser_export.h"
|
| -#include "webkit/common/appcache/appcache_interfaces.h"
|
| -#include "webkit/common/resource_type.h"
|
| -
|
| -namespace net {
|
| -class URLRequest;
|
| -} // namespace net
|
| -
|
| -namespace content {
|
| -FORWARD_DECLARE_TEST(AppCacheGroupTest, CleanupUnusedGroup);
|
| -FORWARD_DECLARE_TEST(AppCacheGroupTest, QueueUpdate);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, Basic);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, SelectNoCache);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, ForeignEntry);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, FailedCacheLoad);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, FailedGroupLoad);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, SetSwappableCache);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, ForDedicatedWorker);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, SelectCacheAllowed);
|
| -FORWARD_DECLARE_TEST(AppCacheHostTest, SelectCacheBlocked);
|
| -FORWARD_DECLARE_TEST(AppCacheTest, CleanupUnusedCache);
|
| -class AppCacheTest;
|
| -class AppCacheHostTest;
|
| -class AppCacheGroupTest;
|
| -class AppCacheStorageImplTest;
|
| -class AppCacheRequestHandlerTest;
|
| -class AppCacheUpdateJobTest;
|
| -}
|
| -
|
| -namespace appcache {
|
| -
|
| -class AppCache;
|
| -class AppCacheFrontend;
|
| -class AppCacheRequestHandler;
|
| -
|
| -typedef base::Callback<void(AppCacheStatus, void*)> GetStatusCallback;
|
| -typedef base::Callback<void(bool, void*)> StartUpdateCallback;
|
| -typedef base::Callback<void(bool, void*)> SwapCacheCallback;
|
| -
|
| -// Server-side representation of an application cache host.
|
| -class WEBKIT_STORAGE_BROWSER_EXPORT AppCacheHost
|
| - : public AppCacheStorage::Delegate,
|
| - public AppCacheGroup::UpdateObserver,
|
| - public AppCacheServiceImpl::Observer {
|
| - public:
|
| -
|
| - class WEBKIT_STORAGE_BROWSER_EXPORT Observer {
|
| - public:
|
| - // Called just after the cache selection algorithm completes.
|
| - virtual void OnCacheSelectionComplete(AppCacheHost* host) = 0;
|
| -
|
| - // Called just prior to the instance being deleted.
|
| - virtual void OnDestructionImminent(AppCacheHost* host) = 0;
|
| -
|
| - virtual ~Observer() {}
|
| - };
|
| -
|
| - AppCacheHost(int host_id, AppCacheFrontend* frontend,
|
| - AppCacheServiceImpl* service);
|
| - virtual ~AppCacheHost();
|
| -
|
| - // Adds/removes an observer, the AppCacheHost does not take
|
| - // ownership of the observer.
|
| - void AddObserver(Observer* observer);
|
| - void RemoveObserver(Observer* observer);
|
| -
|
| - // Support for cache selection and scriptable method calls.
|
| - void SelectCache(const GURL& document_url,
|
| - const int64 cache_document_was_loaded_from,
|
| - const GURL& manifest_url);
|
| - void SelectCacheForWorker(int parent_process_id,
|
| - int parent_host_id);
|
| - void SelectCacheForSharedWorker(int64 appcache_id);
|
| - void MarkAsForeignEntry(const GURL& document_url,
|
| - int64 cache_document_was_loaded_from);
|
| - void GetStatusWithCallback(const GetStatusCallback& callback,
|
| - void* callback_param);
|
| - void StartUpdateWithCallback(const StartUpdateCallback& callback,
|
| - void* callback_param);
|
| - void SwapCacheWithCallback(const 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(
|
| - net::URLRequest* request, ResourceType::Type resource_type);
|
| -
|
| - // Support for devtools inspecting appcache resources.
|
| - void GetResourceList(std::vector<AppCacheResourceInfo>* resource_infos);
|
| -
|
| - // Breaks any existing association between this host and a cache.
|
| - // 'manifest_url' is sent to DevTools as the manifest url that could have
|
| - // been associated before or could be associated later with this host.
|
| - // Associations are broken either thru the cache selection algorithm
|
| - // implemented in this class, or by the update algorithm (see
|
| - // AppCacheUpdateJob).
|
| - void AssociateNoCache(const GURL& manifest_url);
|
| -
|
| - // Establishes an association between this host and an incomplete cache.
|
| - // 'manifest_url' is manifest url of the cache group being updated.
|
| - // Associations with incomplete caches are established by the update algorithm
|
| - // (see AppCacheUpdateJob).
|
| - void AssociateIncompleteCache(AppCache* cache, const GURL& manifest_url);
|
| -
|
| - // Establishes an association between this host and a complete cache.
|
| - // Associations with complete caches are established either thru the cache
|
| - // selection algorithm implemented (in this class), or by the update algorithm
|
| - // (see AppCacheUpdateJob).
|
| - void AssociateCompleteCache(AppCache* cache);
|
| -
|
| - // Adds a reference to the newest complete cache in a group, unless it's the
|
| - // same as the cache that is currently associated with the host.
|
| - void SetSwappableCache(AppCacheGroup* group);
|
| -
|
| - // Used to ensure that a loaded appcache survives a frame navigation.
|
| - void LoadMainResourceCache(int64 cache_id);
|
| -
|
| - // Used to notify the host that a namespace resource is being delivered as
|
| - // the main resource of the page and to provide its url.
|
| - void NotifyMainResourceIsNamespaceEntry(const GURL& namespace_entry_url);
|
| -
|
| - // Used to notify the host that the main resource was blocked by a policy. To
|
| - // work properly, this method needs to by invoked prior to cache selection.
|
| - void NotifyMainResourceBlocked(const GURL& manifest_url);
|
| -
|
| - // Used by the update job to keep track of which hosts are associated
|
| - // with which pending master entries.
|
| - const GURL& pending_master_entry_url() const {
|
| - return new_master_entry_url_;
|
| - }
|
| -
|
| - int host_id() const { return host_id_; }
|
| - AppCacheServiceImpl* service() const { return service_; }
|
| - AppCacheStorage* storage() const { return storage_; }
|
| - AppCacheFrontend* frontend() const { return frontend_; }
|
| - AppCache* associated_cache() const { return associated_cache_.get(); }
|
| -
|
| - bool is_selection_pending() const {
|
| - return pending_selected_cache_id_ != kAppCacheNoCacheId ||
|
| - !pending_selected_manifest_url_.is_empty();
|
| - }
|
| -
|
| - const GURL& first_party_url() const { return first_party_url_; }
|
| -
|
| - // Methods to support cross site navigations.
|
| - void PrepareForTransfer();
|
| - void CompleteTransfer(int host_id, AppCacheFrontend* frontend);
|
| -
|
| - private:
|
| - friend class content::AppCacheHostTest;
|
| - friend class content::AppCacheStorageImplTest;
|
| - friend class content::AppCacheRequestHandlerTest;
|
| - friend class content::AppCacheUpdateJobTest;
|
| -
|
| - AppCacheStatus GetStatus();
|
| - void LoadSelectedCache(int64 cache_id);
|
| - void LoadOrCreateGroup(const GURL& manifest_url);
|
| -
|
| - // See public Associate*Host() methods above.
|
| - void AssociateCacheHelper(AppCache* cache, const GURL& manifest_url);
|
| -
|
| - // AppCacheStorage::Delegate impl
|
| - virtual void OnCacheLoaded(AppCache* cache, int64 cache_id) OVERRIDE;
|
| - virtual void OnGroupLoaded(AppCacheGroup* group,
|
| - const GURL& manifest_url) OVERRIDE;
|
| - // AppCacheServiceImpl::Observer impl
|
| - virtual void OnServiceReinitialized(
|
| - AppCacheStorageReference* old_storage_ref) OVERRIDE;
|
| -
|
| - void FinishCacheSelection(AppCache* cache, AppCacheGroup* group);
|
| - void DoPendingGetStatus();
|
| - void DoPendingStartUpdate();
|
| - void DoPendingSwapCache();
|
| -
|
| - void ObserveGroupBeingUpdated(AppCacheGroup* group);
|
| -
|
| - // AppCacheGroup::UpdateObserver methods.
|
| - virtual void OnUpdateComplete(AppCacheGroup* group) OVERRIDE;
|
| -
|
| - // Returns true if this host is for a dedicated worker context.
|
| - bool is_for_dedicated_worker() const {
|
| - return parent_host_id_ != kAppCacheNoHostId;
|
| - }
|
| -
|
| - // Returns the parent context's host instance. This is only valid
|
| - // to call when this instance is_for_dedicated_worker.
|
| - AppCacheHost* GetParentAppCacheHost() const;
|
| -
|
| - // 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
|
| - // so the other aspects of this class are not relevant for
|
| - // these special case instances.
|
| - int parent_host_id_;
|
| - int parent_process_id_;
|
| -
|
| - // Defined prior to refs to AppCaches and Groups because destruction
|
| - // order matters, the disabled_storage_reference_ must outlive those
|
| - // objects. See additional comments for the storage_ member.
|
| - scoped_refptr<AppCacheStorageReference> disabled_storage_reference_;
|
| -
|
| - // The cache associated with this host, if any.
|
| - scoped_refptr<AppCache> associated_cache_;
|
| -
|
| - // Hold a reference to the newest complete cache (if associated cache is
|
| - // not the newest) to keep the newest cache in existence while the app cache
|
| - // group is in use. The newest complete cache may have no associated hosts
|
| - // holding any references to it and would otherwise be deleted prematurely.
|
| - scoped_refptr<AppCache> swappable_cache_;
|
| -
|
| - // Keep a reference to the group being updated until the update completes.
|
| - scoped_refptr<AppCacheGroup> group_being_updated_;
|
| -
|
| - // Similarly, keep a reference to the newest cache of the group until the
|
| - // update completes. When adding a new master entry to a cache that is not
|
| - // in use in any other host, this reference keeps the cache in memory.
|
| - scoped_refptr<AppCache> newest_cache_of_group_being_updated_;
|
| -
|
| - // Keep a reference to the cache of the main resource so it survives frame
|
| - // navigations.
|
| - scoped_refptr<AppCache> main_resource_cache_;
|
| - int64 pending_main_resource_cache_id_;
|
| -
|
| - // Cache loading is async, if we're loading a specific cache or group
|
| - // for the purposes of cache selection, one or the other of these will
|
| - // indicate which cache or group is being loaded.
|
| - int64 pending_selected_cache_id_;
|
| - GURL pending_selected_manifest_url_;
|
| -
|
| - // A new master entry to be added to the cache, may be empty.
|
| - GURL new_master_entry_url_;
|
| -
|
| - // The frontend proxy to deliver notifications to the child process.
|
| - AppCacheFrontend* frontend_;
|
| -
|
| - // Our central service object.
|
| - AppCacheServiceImpl* service_;
|
| -
|
| - // And the equally central storage object, with a twist. In some error
|
| - // conditions the storage object gets recreated and reinitialized. The
|
| - // disabled_storage_reference_ (defined earlier) allows for cleanup of an
|
| - // instance that got disabled after we had latched onto it. In normal
|
| - // circumstances, disabled_storage_reference_ is expected to be NULL.
|
| - // When non-NULL both storage_ and disabled_storage_reference_ refer to the
|
| - // same instance.
|
| - AppCacheStorage* storage_;
|
| -
|
| - // Since these are synchronous scriptable API calls in the client, there can
|
| - // only be one type of callback pending. Also, we have to wait until we have a
|
| - // cache selection prior to responding to these calls, as cache selection
|
| - // involves async loading of a cache or a group from storage.
|
| - GetStatusCallback pending_get_status_callback_;
|
| - StartUpdateCallback pending_start_update_callback_;
|
| - SwapCacheCallback pending_swap_cache_callback_;
|
| - void* pending_callback_param_;
|
| -
|
| - // True if an intercept or fallback namespace resource was
|
| - // delivered as the main resource.
|
| - bool main_resource_was_namespace_entry_;
|
| - GURL namespace_entry_url_;
|
| -
|
| - // True if requests for this host were blocked by a policy.
|
| - bool main_resource_blocked_;
|
| - GURL blocked_manifest_url_;
|
| -
|
| - // Tells if info about associated cache is pending. Info is pending
|
| - // when update job has not returned success yet.
|
| - bool associated_cache_info_pending_;
|
| -
|
| - // List of objects observing us.
|
| - ObserverList<Observer> observers_;
|
| -
|
| - // Used to inform the QuotaManager of what origins are currently in use.
|
| - GURL origin_in_use_;
|
| -
|
| - // First party url to be used in policy checks.
|
| - GURL first_party_url_;
|
| -
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, CleanupUnusedGroup);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, Basic);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, SelectNoCache);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, ForeignEntry);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, FailedCacheLoad);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, FailedGroupLoad);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, SetSwappableCache);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, ForDedicatedWorker);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, SelectCacheAllowed);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheHostTest, SelectCacheBlocked);
|
| - FRIEND_TEST_ALL_PREFIXES(content::AppCacheTest, CleanupUnusedCache);
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AppCacheHost);
|
| -};
|
| -
|
| -} // namespace appcache
|
| -
|
| -#endif // WEBKIT_BROWSER_APPCACHE_APPCACHE_HOST_H_
|
|
|