18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ApplicationCacheGroup_h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ApplicationCacheGroup_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(OFFLINE_WEB_APPLICATIONS) 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "DOMApplicationCache.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "KURL.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PlatformString.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceHandle.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceHandleClient.h" 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SharedBuffer.h" 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 38db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include <wtf/Noncopyable.h> 39db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include <wtf/HashMap.h> 40db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include <wtf/HashSet.h> 41db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ApplicationCache; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ApplicationCacheResource; 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Document; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass DocumentLoader; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame; 49db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockclass SecurityOrigin; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectenum ApplicationCacheUpdateOption { 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project ApplicationCacheUpdateWithBrowsingContext, 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project ApplicationCacheUpdateWithoutBrowsingContext 54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}; 55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 56ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass ApplicationCacheGroup : ResourceHandleClient { 57ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(ApplicationCacheGroup); WTF_MAKE_FAST_ALLOCATED; 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ApplicationCacheGroup(const KURL& manifestURL, bool isCopy = false); 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~ApplicationCacheGroup(); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project enum UpdateStatus { Idle, Checking, Downloading }; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static ApplicationCache* cacheForMainRequest(const ResourceRequest&, DocumentLoader*); 65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project static ApplicationCache* fallbackCacheForMainRequest(const ResourceRequest&, DocumentLoader*); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void selectCache(Frame*, const KURL& manifestURL); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void selectCacheWithoutManifestURL(Frame*); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const KURL& manifestURL() const { return m_manifestURL; } 71db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block const SecurityOrigin* origin() const { return m_origin.get(); } 72635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UpdateStatus updateStatus() const { return m_updateStatus; } 73e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke void setUpdateStatus(UpdateStatus status); 74635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setStorageID(unsigned storageID) { m_storageID = storageID; } 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned storageID() const { return m_storageID; } 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearStorageID(); 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 79e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke void update(Frame*, ApplicationCacheUpdateOption); // FIXME: Frame should not be needed when updating without browsing context. 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void cacheDestroyed(ApplicationCache*); 81635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 82635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool cacheIsBeingUpdated(const ApplicationCache* cache) const { return cache == m_cacheBeingUpdated; } 83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 84a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void stopLoadingInFrame(Frame*); 85a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ApplicationCache* newestCache() const { return m_newestCache.get(); } 87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void setNewestCache(PassRefPtr<ApplicationCache>); 88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void makeObsolete(); 90635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool isObsolete() const { return m_isObsolete; } 91635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void finishedLoadingMainResource(DocumentLoader*); 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void failedLoadingMainResource(DocumentLoader*); 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void disassociateDocumentLoader(DocumentLoader*); 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isCopy() const { return m_isCopy; } 98635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 100e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke static void postListenerTask(ApplicationCacheHost::EventID id, const HashSet<DocumentLoader*>& set) { postListenerTask(id, 0, 0, set); } 101e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke static void postListenerTask(ApplicationCacheHost::EventID id, DocumentLoader* loader) { postListenerTask(id, 0, 0, loader); } 102e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke static void postListenerTask(ApplicationCacheHost::EventID, int progressTotal, int progressDone, const HashSet<DocumentLoader*>&); 103e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke static void postListenerTask(ApplicationCacheHost::EventID, int progressTotal, int progressDone, DocumentLoader*); 104e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void scheduleReachedMaxAppCacheSizeCallback(); 106db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block void scheduleReachedOriginQuotaCallback(); 1078f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 1088f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian PassRefPtr<ResourceHandle> createResourceHandle(const KURL&, ApplicationCacheResource* newestCachedResource); 109635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 110231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // For normal resource loading, WebKit client is asked about each resource individually. Since application cache does not belong to any particular document, 111231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // the existing client callback cannot be used, so assume that any client that enables application cache also wants it to use credential storage. 112231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual bool shouldUseCredentialStorage(ResourceHandle*) { return true; } 113231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&); 1152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void didReceiveData(ResourceHandle*, const char*, int length, int encodedDataLength); 11668513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void didFinishLoading(ResourceHandle*, double finishTime); 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void didFail(ResourceHandle*, const ResourceError&); 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didReceiveManifestResponse(const ResourceResponse&); 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didReceiveManifestData(const char*, int); 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didFinishLoadingManifest(); 122c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu void didReachMaxAppCacheSize(); 123db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block void didReachOriginQuota(PassRefPtr<Frame> frame); 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void startLoadingEntry(); 126635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void deliverDelayedMainResources(); 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void checkIfLoadIsComplete(); 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void cacheUpdateFailed(); 129db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block void cacheUpdateFailedDueToOriginQuota(); 130635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void manifestNotFound(); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void addEntry(const String&, unsigned type); 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void associateDocumentLoaderWithCache(DocumentLoader*, ApplicationCache*); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void stopLoading(); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL m_manifestURL; 139db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block RefPtr<SecurityOrigin> m_origin; 140635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UpdateStatus m_updateStatus; 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 142635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // This is the newest complete cache in the group. 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<ApplicationCache> m_newestCache; 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 145635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // All complete caches in this cache group. 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HashSet<ApplicationCache*> m_caches; 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 148635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // The cache being updated (if any). Note that cache updating does not immediately create a new 149635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // ApplicationCache object, so this may be null even when update status is not Idle. 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<ApplicationCache> m_cacheBeingUpdated; 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 152635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // List of pending master entries, used during the update process to ensure that new master entries are cached. 153635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project HashSet<DocumentLoader*> m_pendingMasterResourceLoaders; 1545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // How many of the above pending master entries have not yet finished downloading. 1555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian int m_downloadingPendingMasterResourceLoadersCount; 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // These are all the document loaders that are associated with a cache in this group. 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HashSet<DocumentLoader*> m_associatedDocumentLoaders; 159635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The URLs and types of pending cache entries. 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project typedef HashMap<String, unsigned> EntryMap; 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project EntryMap m_pendingEntries; 163e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 164e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke // The total number of items to be processed to update the cache group and the number that have been done. 165e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke int m_progressTotal; 166e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke int m_progressDone; 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 168635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Frame used for fetching resources when updating. 169635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // FIXME: An update started by a particular frame should not stop if it is destroyed, but there are other frames associated with the same cache group. 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Frame* m_frame; 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 172635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // An obsolete cache group is never stored, but the opposite is not true - storing may fail for multiple reasons, such as exceeding disk quota. 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned m_storageID; 174635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool m_isObsolete; 175635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 176635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // During update, this is used to handle asynchronously arriving results. 177635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project enum CompletionType { 178635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project None, 179635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project NoUpdate, 180635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Failure, 181635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Completed 182635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project }; 183635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project CompletionType m_completionType; 184635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Whether this cache group is a copy that's only used for transferring the cache to another file. 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_isCopy; 187c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu 188c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // This flag is set immediately after the ChromeClient::reachedMaxAppCacheSize() callback is invoked as a result of the storage layer failing to save a cache 189c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // due to reaching the maximum size of the application cache database file. This flag is used by ApplicationCacheGroup::checkIfLoadIsComplete() to decide 190c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu // the course of action in case of this failure (i.e. call the ChromeClient callback or run the failure steps). 191c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu bool m_calledReachedMaxAppCacheSize; 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<ResourceHandle> m_currentHandle; 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<ApplicationCacheResource> m_currentResource; 195e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 196e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#if ENABLE(INSPECTOR) 197e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke unsigned long m_currentResourceIdentifier; 198e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#endif 199e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<ApplicationCacheResource> m_manifestResource; 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<ResourceHandle> m_manifestHandle; 202c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu 203db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block int64_t m_loadedSize; 204db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block int64_t m_availableSpaceInQuota; 205db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block bool m_originQuotaReached; 206db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 207c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu friend class ChromeClientCallbackTimer; 208db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block friend class OriginQuotaReachedCallbackTimer; 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(OFFLINE_WEB_APPLICATIONS) 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ApplicationCacheGroup_h 216