diff options
Diffstat (limited to 'Source/WebCore/inspector/NetworkResourcesData.cpp')
-rw-r--r-- | Source/WebCore/inspector/NetworkResourcesData.cpp | 130 |
1 files changed, 18 insertions, 112 deletions
diff --git a/Source/WebCore/inspector/NetworkResourcesData.cpp b/Source/WebCore/inspector/NetworkResourcesData.cpp index 2af001c5a..c17d8e1f7 100644 --- a/Source/WebCore/inspector/NetworkResourcesData.cpp +++ b/Source/WebCore/inspector/NetworkResourcesData.cpp @@ -27,50 +27,20 @@ */ #include "config.h" - -#if ENABLE(INSPECTOR) - #include "NetworkResourcesData.h" #include "CachedResource.h" -#include "DOMImplementation.h" #include "ResourceResponse.h" #include "SharedBuffer.h" #include "TextResourceDecoder.h" -namespace { -// 100MB -static size_t maximumResourcesContentSize = 100 * 1000 * 1000; - -// 10MB -static size_t maximumSingleResourceContentSize = 10 * 1000 * 1000; -} - using namespace Inspector; namespace WebCore { +static const size_t maximumResourcesContentSize = 100 * 1000 * 1000; // 100MB +static const size_t maximumSingleResourceContentSize = 10 * 1000 * 1000; // 10MB -PassRefPtr<XHRReplayData> XHRReplayData::create(const String &method, const URL& url, bool async, PassRefPtr<FormData> formData, bool includeCredentials) -{ - return adoptRef(new XHRReplayData(method, url, async, formData, includeCredentials)); -} - -void XHRReplayData::addHeader(const AtomicString& key, const String& value) -{ - m_headers.set(key, value); -} - -XHRReplayData::XHRReplayData(const String &method, const URL& url, bool async, PassRefPtr<FormData> formData, bool includeCredentials) - : m_method(method) - , m_url(url) - , m_async(async) - , m_formData(formData) - , m_includeCredentials(includeCredentials) -{ -} - -// ResourceData NetworkResourcesData::ResourceData::ResourceData(const String& requestId, const String& loaderId) : m_requestId(requestId) , m_loaderId(loaderId) @@ -135,13 +105,11 @@ size_t NetworkResourcesData::ResourceData::decodeDataToContent() { ASSERT(!hasContent()); size_t dataLength = m_dataBuffer->size(); - m_content = m_decoder->decode(m_dataBuffer->data(), m_dataBuffer->size()); - m_content.append(m_decoder->flush()); + m_content = m_decoder->decodeAndFlush(m_dataBuffer->data(), m_dataBuffer->size()); m_dataBuffer = nullptr; return contentSizeInBytes(m_content) - dataLength; } -// NetworkResourcesData NetworkResourcesData::NetworkResourcesData() : m_contentSize(0) , m_maximumResourcesContentSize(maximumResourcesContentSize) @@ -160,21 +128,6 @@ void NetworkResourcesData::resourceCreated(const String& requestId, const String m_requestIdToResourceDataMap.set(requestId, new ResourceData(requestId, loaderId)); } -static PassRefPtr<TextResourceDecoder> createOtherResourceTextDecoder(const String& mimeType, const String& textEncodingName) -{ - RefPtr<TextResourceDecoder> decoder; - if (!textEncodingName.isEmpty()) - decoder = TextResourceDecoder::create("text/plain", textEncodingName); - else if (DOMImplementation::isXMLMIMEType(mimeType.lower())) { - decoder = TextResourceDecoder::create("application/xml"); - decoder->useLenientXMLDecoding(); - } else if (equalIgnoringCase(mimeType, "text/html")) - decoder = TextResourceDecoder::create("text/html", "UTF-8"); - else if (mimeType == "text/plain") - decoder = TextResourceDecoder::create("text/plain", "ISO-8859-1"); - return decoder; -} - void NetworkResourcesData::responseReceived(const String& requestId, const String& frameId, const ResourceResponse& response) { ResourceData* resourceData = resourceDataForRequestId(requestId); @@ -182,7 +135,7 @@ void NetworkResourcesData::responseReceived(const String& requestId, const Strin return; resourceData->setFrameId(frameId); resourceData->setUrl(response.url()); - resourceData->setDecoder(createOtherResourceTextDecoder(response.mimeType(), response.textEncodingName())); + resourceData->setDecoder(InspectorPageAgent::createTextDecoder(response.mimeType(), response.textEncodingName())); resourceData->setHTTPStatusCode(response.httpStatusCode()); } @@ -214,7 +167,7 @@ void NetworkResourcesData::setResourceContent(const String& requestId, const Str return; if (ensureFreeSpace(dataLength) && !resourceData->isContentEvicted()) { // We can not be sure that we didn't try to save this request data while it was loading, so remove it, if any. - if (resourceData->hasContent()) + if (resourceData->hasContent() || resourceData->hasData()) m_contentSize -= resourceData->removeContent(); m_requestIdsDeque.append(requestId); resourceData->setContent(content, base64Encoded); @@ -261,12 +214,12 @@ void NetworkResourcesData::addCachedResource(const String& requestId, CachedReso resourceData->setCachedResource(cachedResource); } -void NetworkResourcesData::addResourceSharedBuffer(const String& requestId, PassRefPtr<SharedBuffer> buffer, const String& textEncodingName) +void NetworkResourcesData::addResourceSharedBuffer(const String& requestId, RefPtr<SharedBuffer>&& buffer, const String& textEncodingName) { ResourceData* resourceData = resourceDataForRequestId(requestId); if (!resourceData) return; - resourceData->setBuffer(buffer); + resourceData->setBuffer(WTFMove(buffer)); resourceData->setTextEncodingName(textEncodingName); } @@ -275,56 +228,14 @@ NetworkResourcesData::ResourceData const* NetworkResourcesData::data(const Strin return resourceDataForRequestId(requestId); } -XHRReplayData* NetworkResourcesData::xhrReplayData(const String& requestId) -{ - if (m_reusedXHRReplayDataRequestIds.contains(requestId)) - return xhrReplayData(m_reusedXHRReplayDataRequestIds.get(requestId)); - - ResourceData* resourceData = resourceDataForRequestId(requestId); - if (!resourceData) - return nullptr; - return resourceData->xhrReplayData(); -} - -void NetworkResourcesData::setXHRReplayData(const String& requestId, XHRReplayData* xhrReplayData) -{ - ResourceData* resourceData = resourceDataForRequestId(requestId); - if (!resourceData) { - Vector<String> result; - ReusedRequestIds::iterator it; - ReusedRequestIds::iterator end = m_reusedXHRReplayDataRequestIds.end(); - for (it = m_reusedXHRReplayDataRequestIds.begin(); it != end; ++it) { - if (it->value == requestId) - setXHRReplayData(it->key, xhrReplayData); - } - return; - } - - resourceData->setXHRReplayData(xhrReplayData); -} - -void NetworkResourcesData::reuseXHRReplayData(const String& requestId, const String& reusedRequestId) -{ - ResourceData* reusedResourceData = resourceDataForRequestId(reusedRequestId); - ResourceData* resourceData = resourceDataForRequestId(requestId); - if (!reusedResourceData || !resourceData) { - m_reusedXHRReplayDataRequestIds.set(requestId, reusedRequestId); - return; - } - - resourceData->setXHRReplayData(reusedResourceData->xhrReplayData()); -} - Vector<String> NetworkResourcesData::removeCachedResource(CachedResource* cachedResource) { Vector<String> result; - ResourceDataMap::iterator it; - ResourceDataMap::iterator end = m_requestIdToResourceDataMap.end(); - for (it = m_requestIdToResourceDataMap.begin(); it != end; ++it) { - ResourceData* resourceData = it->value; + for (auto& entry : m_requestIdToResourceDataMap) { + ResourceData* resourceData = entry.value; if (resourceData->cachedResource() == cachedResource) { resourceData->setCachedResource(nullptr); - result.append(it->key); + result.append(entry.key); } } @@ -338,25 +249,22 @@ void NetworkResourcesData::clear(const String& preservedLoaderId) ResourceDataMap preservedMap; - ResourceDataMap::iterator it; - ResourceDataMap::iterator end = m_requestIdToResourceDataMap.end(); - for (it = m_requestIdToResourceDataMap.begin(); it != end; ++it) { - ResourceData* resourceData = it->value; + for (auto& entry : m_requestIdToResourceDataMap) { + ResourceData* resourceData = entry.value; + ASSERT(resourceData); if (!preservedLoaderId.isNull() && resourceData->loaderId() == preservedLoaderId) - preservedMap.set(it->key, it->value); + preservedMap.set(entry.key, entry.value); else delete resourceData; } m_requestIdToResourceDataMap.swap(preservedMap); - - m_reusedXHRReplayDataRequestIds.clear(); } -void NetworkResourcesData::setResourcesDataSizeLimits(size_t maximumResourcesContentSize, size_t maximumSingleResourceContentSize) +Vector<NetworkResourcesData::ResourceData*> NetworkResourcesData::resources() { - clear(); - m_maximumResourcesContentSize = maximumResourcesContentSize; - m_maximumSingleResourceContentSize = maximumSingleResourceContentSize; + Vector<NetworkResourcesData::ResourceData*> resources; + copyValuesToVector(m_requestIdToResourceDataMap, resources); + return resources; } NetworkResourcesData::ResourceData* NetworkResourcesData::resourceDataForRequestId(const String& requestId) @@ -392,5 +300,3 @@ bool NetworkResourcesData::ensureFreeSpace(size_t size) } } // namespace WebCore - -#endif // ENABLE(INSPECTOR) |