summaryrefslogtreecommitdiff
path: root/Source/WebCore/loader/appcache/ApplicationCacheHost.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/loader/appcache/ApplicationCacheHost.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/loader/appcache/ApplicationCacheHost.h')
-rw-r--r--Source/WebCore/loader/appcache/ApplicationCacheHost.h291
1 files changed, 129 insertions, 162 deletions
diff --git a/Source/WebCore/loader/appcache/ApplicationCacheHost.h b/Source/WebCore/loader/appcache/ApplicationCacheHost.h
index f6e0d0b94..2bfdc62f9 100644
--- a/Source/WebCore/loader/appcache/ApplicationCacheHost.h
+++ b/Source/WebCore/loader/appcache/ApplicationCacheHost.h
@@ -1,6 +1,7 @@
/*
- * Copyright (c) 2009, Google Inc. All rights reserved.
- *
+ * Copyright (c) 2009, Google Inc. All rights reserved.
+ * Copyright (c) 2017 Apple Inc. All rights reserved.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
@@ -28,172 +29,138 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef ApplicationCacheHost_h
-#define ApplicationCacheHost_h
+#pragma once
#include "URL.h"
#include <wtf/Deque.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
namespace WebCore {
- class DOMApplicationCache;
- class DocumentLoader;
- class Frame;
- class ResourceLoader;
- class ResourceError;
- class ResourceRequest;
- class ResourceResponse;
- class SubstituteData;
- class ApplicationCache;
- class ApplicationCacheGroup;
- class ApplicationCacheResource;
- class ApplicationCacheStorage;
-
- class ApplicationCacheHost {
- WTF_MAKE_NONCOPYABLE(ApplicationCacheHost); WTF_MAKE_FAST_ALLOCATED;
- public:
- // The Status numeric values are specified in the HTML5 spec.
- enum Status {
- UNCACHED = 0,
- IDLE = 1,
- CHECKING = 2,
- DOWNLOADING = 3,
- UPDATEREADY = 4,
- OBSOLETE = 5
- };
-
- enum EventID {
- CHECKING_EVENT = 0,
- ERROR_EVENT,
- NOUPDATE_EVENT,
- DOWNLOADING_EVENT,
- PROGRESS_EVENT,
- UPDATEREADY_EVENT,
- CACHED_EVENT,
- OBSOLETE_EVENT // Must remain the last value, this is used to size arrays.
- };
-
-#if ENABLE(INSPECTOR)
- struct CacheInfo {
- CacheInfo(const URL& manifest, double creationTime, double updateTime, long long size)
- : m_manifest(manifest)
- , m_creationTime(creationTime)
- , m_updateTime(updateTime)
- , m_size(size) { }
- URL m_manifest;
- double m_creationTime;
- double m_updateTime;
- long long m_size;
- };
-
- struct ResourceInfo {
- ResourceInfo(const URL& resource, bool isMaster, bool isManifest, bool isFallback, bool isForeign, bool isExplicit, long long size)
- : m_resource(resource)
- , m_isMaster(isMaster)
- , m_isManifest(isManifest)
- , m_isFallback(isFallback)
- , m_isForeign(isForeign)
- , m_isExplicit(isExplicit)
- , m_size(size) { }
- URL m_resource;
- bool m_isMaster;
- bool m_isManifest;
- bool m_isFallback;
- bool m_isForeign;
- bool m_isExplicit;
- long long m_size;
- };
-
- typedef Vector<ResourceInfo> ResourceInfoList;
-#endif
-
- ApplicationCacheHost(DocumentLoader*);
- ~ApplicationCacheHost();
-
- void selectCacheWithoutManifest();
- void selectCacheWithManifest(const URL& manifestURL);
-
- void maybeLoadMainResource(ResourceRequest&, SubstituteData&);
- void maybeLoadMainResourceForRedirect(ResourceRequest&, SubstituteData&);
- bool maybeLoadFallbackForMainResponse(const ResourceRequest&, const ResourceResponse&);
- void mainResourceDataReceived(const char* data, int length, long long encodedDataLength, bool allAtOnce);
- void finishedLoadingMainResource();
- void failedLoadingMainResource();
-
- bool maybeLoadResource(ResourceLoader*, ResourceRequest&, const URL& originalURL);
- bool maybeLoadFallbackForRedirect(ResourceLoader*, ResourceRequest&, const ResourceResponse&);
- bool maybeLoadFallbackForResponse(ResourceLoader*, const ResourceResponse&);
- bool maybeLoadFallbackForError(ResourceLoader*, const ResourceError&);
-
- bool maybeLoadSynchronously(ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>& data);
- void maybeLoadFallbackSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>& data);
-
- bool canCacheInPageCache();
-
- Status status() const;
- bool update();
- bool swapCache();
- void abort();
-
- void setDOMApplicationCache(DOMApplicationCache*);
- void notifyDOMApplicationCache(EventID, int progressTotal, int progressDone);
-
- void stopLoadingInFrame(Frame*);
-
- void stopDeferringEvents(); // Also raises the events that have been queued up.
-
-#if ENABLE(INSPECTOR)
- void fillResourceList(ResourceInfoList*);
- CacheInfo applicationCacheInfo();
-#endif
-
- bool shouldLoadResourceFromApplicationCache(const ResourceRequest&, ApplicationCacheResource*&);
- bool getApplicationCacheFallbackResource(const ResourceRequest&, ApplicationCacheResource*&, ApplicationCache* = 0);
-
- private:
- bool isApplicationCacheEnabled();
- DocumentLoader* documentLoader() const { return m_documentLoader; }
-
- struct DeferredEvent {
- EventID eventID;
- int progressTotal;
- int progressDone;
- DeferredEvent(EventID id, int total, int done) : eventID(id), progressTotal(total), progressDone(done) { }
- };
-
- DOMApplicationCache* m_domApplicationCache;
- DocumentLoader* m_documentLoader;
- bool m_defersEvents; // Events are deferred until after document onload.
- Vector<DeferredEvent> m_deferredEvents;
-
- void dispatchDOMEvent(EventID, int progressTotal, int progressDone);
-
- friend class ApplicationCacheGroup;
- friend class ApplicationCacheStorage;
-
- bool scheduleLoadFallbackResourceFromApplicationCache(ResourceLoader*, ApplicationCache* = 0);
- void setCandidateApplicationCacheGroup(ApplicationCacheGroup* group);
- ApplicationCacheGroup* candidateApplicationCacheGroup() const { return m_candidateApplicationCacheGroup; }
- void setApplicationCache(PassRefPtr<ApplicationCache> applicationCache);
- ApplicationCache* applicationCache() const { return m_applicationCache.get(); }
- ApplicationCache* mainResourceApplicationCache() const { return m_mainResourceApplicationCache.get(); }
- bool maybeLoadFallbackForMainError(const ResourceRequest&, const ResourceError&);
-
-
- // The application cache that the document loader is associated with (if any).
- RefPtr<ApplicationCache> m_applicationCache;
-
- // Before an application cache has finished loading, this will be the candidate application
- // group that the document loader is associated with.
- ApplicationCacheGroup* m_candidateApplicationCacheGroup;
-
- // This is the application cache the main resource was loaded from (if any).
- RefPtr<ApplicationCache> m_mainResourceApplicationCache;
+
+class ApplicationCache;
+class ApplicationCacheGroup;
+class ApplicationCacheResource;
+class ApplicationCacheStorage;
+class DOMApplicationCache;
+class DocumentLoader;
+class Frame;
+class ResourceError;
+class ResourceLoader;
+class ResourceRequest;
+class ResourceResponse;
+class SharedBuffer;
+class SubstituteData;
+
+class ApplicationCacheHost {
+ WTF_MAKE_NONCOPYABLE(ApplicationCacheHost); WTF_MAKE_FAST_ALLOCATED;
+public:
+ // The Status numeric values are specified in the HTML5 spec.
+ enum Status {
+ UNCACHED = 0,
+ IDLE = 1,
+ CHECKING = 2,
+ DOWNLOADING = 3,
+ UPDATEREADY = 4,
+ OBSOLETE = 5
};
-} // namespace WebCore
+ struct CacheInfo {
+ URL manifest;
+ double creationTime;
+ double updateTime;
+ long long size;
+ };
+
+ struct ResourceInfo {
+ URL resource;
+ bool isMaster;
+ bool isManifest;
+ bool isFallback;
+ bool isForeign;
+ bool isExplicit;
+ long long size;
+ };
+
+ explicit ApplicationCacheHost(DocumentLoader&);
+ ~ApplicationCacheHost();
+
+ static URL createFileURL(const String&);
+
+ void selectCacheWithoutManifest();
+ void selectCacheWithManifest(const URL& manifestURL);
+
+ void maybeLoadMainResource(ResourceRequest&, SubstituteData&);
+ void maybeLoadMainResourceForRedirect(ResourceRequest&, SubstituteData&);
+ bool maybeLoadFallbackForMainResponse(const ResourceRequest&, const ResourceResponse&);
+ void mainResourceDataReceived(const char* data, int length, long long encodedDataLength, bool allAtOnce);
+ void finishedLoadingMainResource();
+ void failedLoadingMainResource();
+
+ WEBCORE_EXPORT bool maybeLoadResource(ResourceLoader&, const ResourceRequest&, const URL& originalURL);
+ WEBCORE_EXPORT bool maybeLoadFallbackForRedirect(ResourceLoader*, ResourceRequest&, const ResourceResponse&);
+ WEBCORE_EXPORT bool maybeLoadFallbackForResponse(ResourceLoader*, const ResourceResponse&);
+ WEBCORE_EXPORT bool maybeLoadFallbackForError(ResourceLoader*, const ResourceError&);
+
+ bool maybeLoadSynchronously(ResourceRequest&, ResourceError&, ResourceResponse&, RefPtr<SharedBuffer>&);
+ void maybeLoadFallbackSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, RefPtr<SharedBuffer>&);
+
+ bool canCacheInPageCache();
+
+ Status status() const;
+ bool update();
+ bool swapCache();
+ void abort();
+
+ void setDOMApplicationCache(DOMApplicationCache*);
+ void notifyDOMApplicationCache(const AtomicString& eventType, int progressTotal, int progressDone);
+
+ void stopLoadingInFrame(Frame&);
-#endif // ApplicationCacheHost_h
+ void stopDeferringEvents(); // Also raises the events that have been queued up.
+
+ Vector<ResourceInfo> resourceList();
+ CacheInfo applicationCacheInfo();
+
+ bool shouldLoadResourceFromApplicationCache(const ResourceRequest&, ApplicationCacheResource*&);
+ bool getApplicationCacheFallbackResource(const ResourceRequest&, ApplicationCacheResource*&, ApplicationCache* = nullptr);
+
+private:
+ friend class ApplicationCacheGroup;
+
+ struct DeferredEvent {
+ AtomicString eventType;
+ int progressTotal;
+ int progressDone;
+ };
+
+ bool isApplicationCacheEnabled();
+ bool isApplicationCacheBlockedForRequest(const ResourceRequest&);
+
+ void dispatchDOMEvent(const AtomicString& eventType, int progressTotal, int progressDone);
+
+ bool scheduleLoadFallbackResourceFromApplicationCache(ResourceLoader*, ApplicationCache* = nullptr);
+ void setCandidateApplicationCacheGroup(ApplicationCacheGroup*);
+ ApplicationCacheGroup* candidateApplicationCacheGroup() const { return m_candidateApplicationCacheGroup; }
+ void setApplicationCache(RefPtr<ApplicationCache>&&);
+ ApplicationCache* applicationCache() const { return m_applicationCache.get(); }
+ ApplicationCache* mainResourceApplicationCache() const { return m_mainResourceApplicationCache.get(); }
+ bool maybeLoadFallbackForMainError(const ResourceRequest&, const ResourceError&);
+
+ DOMApplicationCache* m_domApplicationCache { nullptr };
+ DocumentLoader& m_documentLoader;
+
+ bool m_defersEvents { true }; // Events are deferred until after document onload.
+ Vector<DeferredEvent> m_deferredEvents;
+
+ // The application cache that the document loader is associated with (if any).
+ RefPtr<ApplicationCache> m_applicationCache;
+
+ // Before an application cache has finished loading, this will be the candidate application
+ // group that the document loader is associated with.
+ ApplicationCacheGroup* m_candidateApplicationCacheGroup { nullptr };
+
+ // This is the application cache the main resource was loaded from (if any).
+ RefPtr<ApplicationCache> m_mainResourceApplicationCache;
+};
+
+} // namespace WebCore