15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Google Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution.
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef NetworkResourcesData_h
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define NetworkResourcesData_h
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/dom/ContextLifecycleObserver.h"
3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/html/parser/TextResourceDecoder.h"
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorPageAgent.h"
351e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/network/HTTPHeaderMap.h"
3651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/weborigin/KURL.h"
37521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/Deque.h"
38521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/HashMap.h"
39521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/RefCounted.h"
40521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/text/WTFString.h"
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class ExecutionContext;
46fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdochclass Resource;
47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class FormData;
48e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)class ResourceResponse;
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class SharedBuffer;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class TextResourceDecoder;
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class XHRReplayData
53c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    : public RefCountedWillBeGarbageCollectedFinalized<XHRReplayData>
5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    , public ContextLifecycleObserver {
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
56c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    static PassRefPtrWillBeRawPtr<XHRReplayData> create(ExecutionContext*, const AtomicString& method, const KURL&, bool async, PassRefPtr<FormData>, bool includeCredentials);
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    void addHeader(const AtomicString& key, const AtomicString& value);
59a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    const AtomicString& method() const { return m_method; }
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const KURL& url() const { return m_url; }
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool async() const { return m_async; }
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PassRefPtr<FormData> formData() const { return m_formData; }
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const HTTPHeaderMap& headers() const { return m_headers; }
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool includeCredentials() const { return m_includeCredentials; }
650019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
66c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    void trace(Visitor*) { }
67c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    XHRReplayData(ExecutionContext*, const AtomicString& method, const KURL&, bool async, PassRefPtr<FormData>, bool includeCredentials);
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    AtomicString m_method;
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    KURL m_url;
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_async;
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<FormData> m_formData;
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HTTPHeaderMap m_headers;
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_includeCredentials;
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class NetworkResourcesData {
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WTF_MAKE_FAST_ALLOCATED;
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class ResourceData {
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        WTF_MAKE_FAST_ALLOCATED;
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        friend class NetworkResourcesData;
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    public:
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ResourceData(const String& requestId, const String& loaderId);
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String requestId() const { return m_requestId; }
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String loaderId() const { return m_loaderId; }
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String frameId() const { return m_frameId; }
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setFrameId(const String& frameId) { m_frameId = frameId; }
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)        KURL url() const { return m_url; }
9506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)        void setUrl(const KURL& url) { m_url = url; }
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool hasContent() const { return !m_content.isNull(); }
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String content() const { return m_content; }
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setContent(const String&, bool base64Encoded);
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool base64Encoded() const { return m_base64Encoded; }
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        unsigned removeContent();
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool isContentEvicted() const { return m_isContentEvicted; }
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        unsigned evictContent();
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        InspectorPageAgent::ResourceType type() const { return m_type; }
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setType(InspectorPageAgent::ResourceType type) { m_type = type; }
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int httpStatusCode() const { return m_httpStatusCode; }
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setHTTPStatusCode(int httpStatusCode) { m_httpStatusCode = httpStatusCode; }
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String textEncodingName() const { return m_textEncodingName; }
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setTextEncodingName(const String& textEncodingName) { m_textEncodingName = textEncodingName; }
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)        TextResourceDecoder* decoder() const { return m_decoder.get(); }
11751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)        void setDecoder(PassOwnPtr<TextResourceDecoder> decoder) { m_decoder = decoder; }
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        PassRefPtr<SharedBuffer> buffer() const { return m_buffer; }
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setBuffer(PassRefPtr<SharedBuffer> buffer) { m_buffer = buffer; }
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
122fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch        Resource* cachedResource() const { return m_cachedResource; }
123fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch        void setResource(Resource* cachedResource) { m_cachedResource = cachedResource; }
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        XHRReplayData* xhrReplayData() const { return m_xhrReplayData.get(); }
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setXHRReplayData(XHRReplayData* xhrReplayData) { m_xhrReplayData = xhrReplayData; }
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    private:
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool hasData() const { return m_dataBuffer; }
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        size_t dataLength() const;
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void appendData(const char* data, size_t dataLength);
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        size_t decodeDataToContent();
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_requestId;
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_loaderId;
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_frameId;
13706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)        KURL m_url;
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_content;
139c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        RefPtrWillBePersistent<XHRReplayData> m_xhrReplayData;
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool m_base64Encoded;
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        RefPtr<SharedBuffer> m_dataBuffer;
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool m_isContentEvicted;
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        InspectorPageAgent::ResourceType m_type;
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int m_httpStatusCode;
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_textEncodingName;
14751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)        OwnPtr<TextResourceDecoder> m_decoder;
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        RefPtr<SharedBuffer> m_buffer;
150fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch        Resource* m_cachedResource;
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    NetworkResourcesData();
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ~NetworkResourcesData();
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void resourceCreated(const String& requestId, const String& loaderId);
1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void responseReceived(const String& requestId, const String& frameId, const ResourceResponse&);
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setResourceType(const String& requestId, InspectorPageAgent::ResourceType);
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    InspectorPageAgent::ResourceType resourceType(const String& requestId);
1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setResourceContent(const String& requestId, const String& content, bool base64Encoded = false);
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void maybeAddResourceData(const String& requestId, const char* data, size_t dataLength);
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void maybeDecodeDataToContent(const String& requestId);
164fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch    void addResource(const String& requestId, Resource*);
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ResourceData const* data(const String& requestId);
166fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch    Vector<String> removeResource(Resource*);
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void clear(const String& preservedLoaderId = String());
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setResourcesDataSizeLimits(size_t maximumResourcesContentSize, size_t maximumSingleResourceContentSize);
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setXHRReplayData(const String& requestId, XHRReplayData*);
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    XHRReplayData* xhrReplayData(const String& requestId);
17206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)    Vector<ResourceData*> resources();
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
175926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    ResourceData* resourceDataForRequestId(const String& requestId);
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void ensureNoDataForRequestId(const String& requestId);
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool ensureFreeSpace(size_t);
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Deque<String> m_requestIdsDeque;
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    typedef HashMap<String, String> ReusedRequestIds;
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ReusedRequestIds m_reusedXHRReplayDataRequestIds;
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    typedef HashMap<String, ResourceData*> ResourceDataMap;
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ResourceDataMap m_requestIdToResourceDataMap;
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    size_t m_contentSize;
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    size_t m_maximumResourcesContentSize;
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    size_t m_maximumSingleResourceContentSize;
1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
190c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // !defined(NetworkResourcesData_h)
194