| Index: loader/appcache2/ApplicationCacheFrontend.h
|
| ===================================================================
|
| --- loader/appcache2/ApplicationCacheFrontend.h (revision 0)
|
| +++ loader/appcache2/ApplicationCacheFrontend.h (revision 0)
|
| @@ -0,0 +1,155 @@
|
| +/*
|
| + * Copyright (c) 2009, Google 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:
|
| + *
|
| + * * Redistributions of source code must retain the above copyright
|
| + * notice, this list of conditions and the following disclaimer.
|
| + * * Redistributions in binary form must reproduce the above
|
| + * copyright notice, this list of conditions and the following disclaimer
|
| + * in the documentation and/or other materials provided with the
|
| + * distribution.
|
| + * * Neither the name of Google Inc. nor the names of its
|
| + * contributors may be used to endorse or promote products derived from
|
| + * this software without specific prior written permission.
|
| + *
|
| + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + */
|
| +
|
| +#ifndef ApplicationCacheFrontend_h
|
| +#define ApplicationCacheFrontend_h
|
| +
|
| +#if ENABLE(APPLICATION_CACHE)
|
| +
|
| +#include "ApplicationCacheCommon.h"
|
| +#include "KURL.h"
|
| +#include <wtf/Threading.h>
|
| +
|
| +namespace WebCore {
|
| +
|
| + class ApplicationCacheBridge;
|
| + class ApplicationCacheBridgeClientImpl;
|
| + class DOMApplicationCache;
|
| + class Frame;
|
| + class ResourceRequest;
|
| +
|
| + // Each frame and worker has an ApplicationCacheFrontend which serves as a
|
| + // facade to the actual implmentation which may be running in another process.
|
| + // FIXME: integrate with the inspector
|
| + // FIXME: integrate with workers
|
| + class ApplicationCacheFrontend {
|
| + public:
|
| + ApplicationCacheFrontend();
|
| +
|
| + // Deleted upon frame destruction.
|
| + ~ApplicationCacheFrontend();
|
| +
|
| + // Returns the appcache contextID for this instance, each frame is uniquely
|
| + // identified by this ID.
|
| + const GlobalApplicationCacheContextID& contextID() const { return m_contextID; }
|
| +
|
| + // Returns the appcache contextType for this instance
|
| + ApplicationCacheContextType contextType() const { return m_contextType; }
|
| +
|
| + // Called during frame creation. Should only be called once.
|
| + void initializeForFrame(Frame* frame);
|
| +
|
| + // Called during frame navigation when a new document is committed.
|
| + void selectInitialCache(const KURL& documentURL,
|
| + ApplicationCacheID cacheDocumentWasLoadedFrom);
|
| +
|
| + // Called after parsing of the HTML element is complete, and there was no
|
| + // manifest attribute.
|
| + void selectCacheWithoutManifest(const KURL& documentURL,
|
| + ApplicationCacheID cacheDocumentWasLoadedFrom);
|
| +
|
| + // Called after parsing of the HTML element is complete, and there was a
|
| + // manifest attribute. Returns false if the the navigation should be restarted,
|
| + // this occurs if a 'foriegn' resource was loaded from the cache.
|
| + bool selectCacheWithManifest(const KURL& documentURL,
|
| + ApplicationCacheID cacheDocumentWasLoadedFrom,
|
| + const KURL& manifestURLofCacheDocumentWasLoadedFrom,
|
| + const KURL& manifestURL);
|
| +
|
| + // Called by FrameLoader when preparing a resource request associated with this context.
|
| + void addExtraFieldsToRequest(ResourceRequest& request, bool mainResource);
|
| +
|
| + // Called by FrameLoader when deciding whether the contents are eligible for the page cache.
|
| + bool canCacheCurrentDocumentInPageCache() const;
|
| +
|
| + // Support for the scriptable interface defined by DOMApplicatoinCache.idl
|
| + ApplicationCacheStatus status() const;
|
| + bool update();
|
| + bool swapCache();
|
| + void setDOMApplicationCache(DOMApplicationCache* client)
|
| + {
|
| + ASSERT(!m_DOMApplicationCache || !client);
|
| + ASSERT(isInitialized());
|
| + m_DOMApplicationCache = client;
|
| + }
|
| +
|
| + protected:
|
| + // methods for use by the bridge client
|
| + friend ApplicationCacheBridgeClientImpl;
|
| +
|
| + // Retrieve the frontend object for a contextID. It is a programming error
|
| + // to retrieve the object on the wrong thread.
|
| + static ApplicationCacheFrontend* fromContextID(const GlobalApplicationCacheContextID &contextID);
|
| +
|
| + // Used by the bridge to prevent sending notification related to a previously selected cache
|
| + int cacheSequenceNumber() { return m_cacheSequenceNumber; }
|
| +
|
| + // Called by the backend proxy to notify the frontend of happenings to the underlying
|
| + // appcache associated with this context.
|
| + void notifySelectComplete(ApplicationCacheStatus status);
|
| + void notifyStatusChanged(ApplicationCacheStatus status);
|
| + void notifyEventListener(ApplicationCacheEventType eventType);
|
| +
|
| + private:
|
| + void initialize(ApplicationCacheContextType contextType,
|
| + const GlobalApplicationCacheContextID& parentContextID);
|
| +
|
| + bool isInitialized() const { return m_contextID != GlobalApplicationCacheContextID::none(); }
|
| + int prepareForSelectCall();
|
| +
|
| + static void addToMap(ApplicationCacheFrontend* frontend);
|
| + static void removeFromMap(ApplicationCacheFrontend* frontend);
|
| +
|
| + // System wide unique id for the context.
|
| + GlobalApplicationCacheContextID m_contextID;
|
| +
|
| + // The type of context.
|
| + ApplicationCacheContextType m_contextType;
|
| +
|
| + // The DOM object thru which we surface events to script.
|
| + DOMApplicationCache* m_DOMApplicationCache;
|
| +
|
| + bool m_canCacheInPageCache;
|
| + bool m_isSelectInProgress;
|
| + int m_cacheSequenceNumber;
|
| +
|
| + // We cache this value to avoid round trips to the backend when the
|
| + // status method is called.
|
| + mutable bool m_hasCachedStatus;
|
| + mutable ApplicationCacheStatus m_cachedStatus;
|
| +
|
| + // Our bridge to the backend.
|
| + ApplicationCacheBridge* m_bridge;
|
| + };
|
| +
|
| +} // namespace WebCore
|
| +
|
| +#endif // ENABLE(APPLICATION_CACHE)
|
| +#endif // ApplicationCacheFrontend_h
|
|
|
| Property changes on: loader\appcache2\ApplicationCacheFrontend.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|