Changeset 90373 in webkit
- Timestamp:
- Jul 4, 2011 1:07:20 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 9 added
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r90266 r90373 1 2011-07-04 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Show content for plugin requests in network panel. 4 https://bugs.webkit.org/show_bug.cgi?id=30080 5 6 Reviewed by Pavel Feldman. 7 8 * Source/autotools/symbols.filter: 9 1 10 2011-07-01 Tony Chang <tony@chromium.org> 2 11 -
trunk/LayoutTests/ChangeLog
r90372 r90373 1 2011-07-04 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Show content for plugin requests in network panel. 4 https://bugs.webkit.org/show_bug.cgi?id=30080 5 6 Reviewed by Pavel Feldman. 7 8 * http/tests/inspector/network/network-content-replacement-embed-expected.txt: Added. 9 * http/tests/inspector/network/network-content-replacement-embed.html: Added. 10 * http/tests/inspector/network/network-content-replacement-xhr-expected.txt: Added. 11 * http/tests/inspector/network/network-content-replacement-xhr.html: Added. 12 * http/tests/inspector/network/network-embed-expected.txt: Added. 13 * http/tests/inspector/network/network-embed.html: Added. 14 * http/tests/inspector/network/network-xhr-async-expected.txt: 15 * http/tests/inspector/network/network-xhr-async.html: 16 * http/tests/inspector/network/network-xhr-sync-expected.txt: 17 * http/tests/inspector/network/network-xhr-sync.html: 18 * http/tests/inspector/network/resources/cp1251.xml: Added. 19 * http/tests/inspector/network/resources/plugin-data.php: Added. 20 * http/tests/inspector/network/resources/resource.php: 21 * http/tests/inspector/network/resources/utf8.xml: Added. 22 * platform/chromium/test_expectations.txt: 23 1 24 2011-07-04 Anders Carlsson <andersca@apple.com> 2 25 -
trunk/LayoutTests/http/tests/inspector/network/network-xhr-async-expected.txt
r89036 r90373 1 CONSOLE MESSAGE: line 13: Done.1 CONSOLE MESSAGE: line 21: Done. 2 2 Tests XHR network resource type and content for asynchronous requests. Bug 61205 3 3 -
trunk/LayoutTests/http/tests/inspector/network/network-xhr-async.html
r89036 r90373 6 6 function loadData() 7 7 { 8 if (!window.internals) { 9 console.log("This test can not be run as window.internals is not available."); 10 return; 11 } 12 // Since this test could be run together with other inspector backend cache 13 // tests, we need to reset size limits to default ones. 14 internals.setInspectorResourcesDataSizeLimits(document, 10 * 1000 * 1000, 1000 * 1000); 15 8 16 doXHR("GET", "resources/resource.php", true, resourceLoaded); 9 17 } -
trunk/LayoutTests/http/tests/inspector/network/network-xhr-sync-expected.txt
r89036 r90373 1 CONSOLE MESSAGE: line 13: Done.1 CONSOLE MESSAGE: line 21: Done. 2 2 Tests XHR network resource type and content for synchronous requests. Bug 61205 3 3 -
trunk/LayoutTests/http/tests/inspector/network/network-xhr-sync.html
r89036 r90373 6 6 function loadData() 7 7 { 8 if (!window.internals) { 9 console.log("This test can not be run as window.internals is not available."); 10 return; 11 } 12 // Since this test could be run together with other inspector backend cache 13 // tests, we need to reset size limits to default ones. 14 internals.setInspectorResourcesDataSizeLimits(document, 10 * 1000 * 1000, 1000 * 1000); 15 8 16 doXHR("GET", "resources/resource.php", false, resourceLoaded); 9 17 } -
trunk/LayoutTests/http/tests/inspector/network/resources/resource.php
r89349 r90373 27 27 header("Content-Type: image/png"); 28 28 else 29 header("Content-Type: text/ html");29 header("Content-Type: text/plain"); 30 30 31 31 # Flush headers and sleep bofore sending response -
trunk/LayoutTests/platform/chromium/test_expectations.txt
r90370 r90373 656 656 WONTFIX SKIP : http/tests/inspector/extensions-headers.html = FAIL 657 657 WONTFIX SKIP : http/tests/inspector/extensions-resources-redirect.html = FAIL 658 659 // There is no enough plugins support in DRT 660 WONTFIX SKIP : http/tests/inspector/network/network-embed.html = FAIL 661 WONTFIX SKIP : http/tests/inspector/network/network-content-replacement-embed.html = FAIL 658 662 659 663 // Inspector tests in Debug build are very slow. -
trunk/Source/WebCore/ChangeLog
r90369 r90373 1 2011-07-04 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Show content for plugin requests in network panel. 4 https://bugs.webkit.org/show_bug.cgi?id=30080 5 6 Reviewed by Pavel Feldman. 7 8 Tests: http/tests/inspector/network/network-content-replacement-embed.html 9 http/tests/inspector/network/network-content-replacement-xhr.html 10 http/tests/inspector/network/network-embed.html 11 12 * WebCore.exp.in: 13 * inspector/InspectorController.cpp: 14 (WebCore::InspectorController::setResourcesDataSizeLimitsFromInternals): 15 * inspector/InspectorController.h: 16 * inspector/InspectorInstrumentation.cpp: 17 (WebCore::InspectorInstrumentation::didReceiveDataImpl): 18 * inspector/InspectorInstrumentation.h: 19 (WebCore::InspectorInstrumentation::didReceiveData): 20 * inspector/InspectorResourceAgent.cpp: 21 (WebCore::InspectorResourceAgent::didReceiveResponse): 22 (WebCore::InspectorResourceAgent::didReceiveData): 23 (WebCore::InspectorResourceAgent::didFinishLoading): 24 (WebCore::InspectorResourceAgent::setInitialXHRContent): 25 (WebCore::InspectorResourceAgent::setResourcesDataSizeLimitsFromInternals): 26 (WebCore::InspectorResourceAgent::getResourceContent): 27 * inspector/InspectorResourceAgent.h: 28 * inspector/NetworkResourcesData.cpp: 29 (WebCore::NetworkResourcesData::ResourceData::ResourceData): 30 (WebCore::NetworkResourcesData::ResourceData::setContent): 31 (WebCore::NetworkResourcesData::ResourceData::purgeContent): 32 (WebCore::NetworkResourcesData::ResourceData::createDecoder): 33 (WebCore::NetworkResourcesData::ResourceData::dataLength): 34 (WebCore::NetworkResourcesData::ResourceData::appendData): 35 (WebCore::NetworkResourcesData::ResourceData::decodeDataToContent): 36 (WebCore::NetworkResourcesData::NetworkResourcesData): 37 (WebCore::NetworkResourcesData::responseReceived): 38 (WebCore::NetworkResourcesData::setResourceContent): 39 (WebCore::NetworkResourcesData::maybeAddResourceData): 40 (WebCore::NetworkResourcesData::maybeDecodeDataToContent): 41 (WebCore::NetworkResourcesData::data): 42 (WebCore::NetworkResourcesData::clear): 43 (WebCore::NetworkResourcesData::setResourcesDataSizeLimits): 44 (WebCore::NetworkResourcesData::ensureNoDataForIdentifier): 45 (WebCore::NetworkResourcesData::ensureFreeSpace): 46 * inspector/NetworkResourcesData.h: 47 (WebCore::NetworkResourcesData::ResourceData::hasContent): 48 (WebCore::NetworkResourcesData::ResourceData::content): 49 (WebCore::NetworkResourcesData::ResourceData::decoder): 50 (WebCore::NetworkResourcesData::ResourceData::buffer): 51 (WebCore::NetworkResourcesData::ResourceData::setBuffer): 52 (WebCore::NetworkResourcesData::ResourceData::hasData): 53 * inspector/front-end/Resource.js: 54 (WebInspector.Resource.prototype.get contentEncoded): 55 * inspector/front-end/ResourcePreviewView.js: 56 (WebInspector.ResourcePreviewView.prototype.contentLoaded): 57 (WebInspector.ResourcePreviewView.prototype._createEmptyView): 58 (WebInspector.ResourcePreviewView.prototype._createPreviewView): 59 * inspector/front-end/ResourceView.js: 60 (WebInspector.ResourceView.hasTextContent): 61 * loader/DocumentThreadableLoader.cpp: 62 (WebCore::DocumentThreadableLoader::didReceiveData): 63 * loader/FrameLoader.cpp: 64 (WebCore::FrameLoader::willLoadMediaElementURL): 65 (WebCore::FrameLoader::commitProvisionalLoad): 66 (WebCore::FrameLoader::loadResourceSynchronously): 67 (WebCore::FrameLoader::loadedResourceFromMemoryCache): 68 * loader/ResourceLoadNotifier.cpp: 69 (WebCore::ResourceLoadNotifier::didReceiveData): 70 (WebCore::ResourceLoadNotifier::dispatchDidReceiveData): 71 (WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages): 72 * loader/ResourceLoadNotifier.h: 73 * loader/appcache/ApplicationCacheGroup.cpp: 74 (WebCore::ApplicationCacheGroup::didReceiveData): 75 * testing/Internals.cpp: 76 (WebCore::Internals::setInspectorResourcesDataSizeLimits): 77 * testing/Internals.h: 78 * testing/Internals.idl: 79 1 80 2011-07-04 Jeff Timanus <twiz@chromium.org> 2 81 -
trunk/Source/WebCore/WebCore.exp.in
r90338 r90373 1302 1302 __ZNK7WebCore8Document31displayStringModifiedByEncodingERKN3WTF6StringE 1303 1303 __ZNK7WebCore8Document4bodyEv 1304 __ZNK7WebCore8Document4pageEv 1304 1305 __ZNK7WebCore8Document6domainEv 1305 1306 __ZNK7WebCore8Document6loaderEv … … 1582 1583 __ZN7WebCore19InspectorController26stopUserInitiatedProfilingEv 1583 1584 __ZN7WebCore19InspectorController27startUserInitiatedProfilingEv 1585 __ZN7WebCore19InspectorController39setResourcesDataSizeLimitsFromInternalsEii 1584 1586 __ZN7WebCore19InspectorController4showEv 1585 1587 __ZN7WebCore19InspectorController5closeEv -
trunk/Source/WebCore/inspector/InspectorController.cpp
r90017 r90373 490 490 #endif 491 491 492 void InspectorController::setResourcesDataSizeLimitsFromInternals(int maximumResourcesContentSize, int maximumSingleResourceContentSize) 493 { 494 m_resourceAgent->setResourcesDataSizeLimitsFromInternals(maximumResourcesContentSize, maximumSingleResourceContentSize); 495 } 496 492 497 } // namespace WebCore 493 498 -
trunk/Source/WebCore/inspector/InspectorController.h
r90017 r90373 121 121 #endif 122 122 123 void setResourcesDataSizeLimitsFromInternals(int maximumResourcesContentSize, int maximumSingleResourceContentSize); 124 123 125 private: 124 126 friend class PostWorkerNotificationToFrontendTask; -
trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp
r89345 r90373 493 493 } 494 494 495 void InspectorInstrumentation::didReceive ContentLengthImpl(InstrumentingAgents* instrumentingAgents, unsigned long identifier, int dataLength, int encodedDataLength)496 { 497 if (InspectorResourceAgent* resourceAgent = instrumentingAgents->inspectorResourceAgent()) 498 resourceAgent->didReceive ContentLength(identifier, dataLength, encodedDataLength);495 void InspectorInstrumentation::didReceiveDataImpl(InstrumentingAgents* instrumentingAgents, unsigned long identifier, const char* data, int dataLength, int encodedDataLength) 496 { 497 if (InspectorResourceAgent* resourceAgent = instrumentingAgents->inspectorResourceAgent()) 498 resourceAgent->didReceiveData(identifier, data, dataLength, encodedDataLength); 499 499 } 500 500 -
trunk/Source/WebCore/inspector/InspectorInstrumentation.h
r89652 r90373 127 127 static void continueWithPolicyDownload(Frame*, DocumentLoader*, unsigned long identifier, const ResourceResponse&); 128 128 static void continueWithPolicyIgnore(Frame*, DocumentLoader*, unsigned long identifier, const ResourceResponse&); 129 static void didReceive ContentLength(Frame*, unsigned long identifier, int dataLength, int encodedDataLength);129 static void didReceiveData(Frame*, unsigned long identifier, const char* data, int dataLength, int encodedDataLength); 130 130 static void didFinishLoading(Frame*, DocumentLoader*, unsigned long identifier, double finishTime); 131 131 static void didFailLoading(Frame*, DocumentLoader*, unsigned long identifier, const ResourceError&); … … 255 255 static void continueWithPolicyDownloadImpl(Frame*, DocumentLoader*, unsigned long identifier, const ResourceResponse&); 256 256 static void continueWithPolicyIgnoreImpl(Frame*, DocumentLoader*, unsigned long identifier, const ResourceResponse&); 257 static void didReceive ContentLengthImpl(InstrumentingAgents*, unsigned long identifier, int dataLength, int encodedDataLength);257 static void didReceiveDataImpl(InstrumentingAgents*, unsigned long identifier, const char* data, int dataLength, int encodedDataLength); 258 258 static void didFinishLoadingImpl(InstrumentingAgents*, unsigned long identifier, DocumentLoader*, double finishTime); 259 259 static void didFailLoadingImpl(InstrumentingAgents*, unsigned long identifier, DocumentLoader*, const ResourceError&); … … 765 765 } 766 766 767 inline void InspectorInstrumentation::didReceive ContentLength(Frame* frame, unsigned long identifier, int dataLength, int encodedDataLength)768 { 769 #if ENABLE(INSPECTOR) 770 if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) 771 didReceive ContentLengthImpl(instrumentingAgents, identifier, dataLength, encodedDataLength);767 inline void InspectorInstrumentation::didReceiveData(Frame* frame, unsigned long identifier, const char* data, int dataLength, int encodedDataLength) 768 { 769 #if ENABLE(INSPECTOR) 770 if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame)) 771 didReceiveDataImpl(instrumentingAgents, identifier, data, dataLength, encodedDataLength); 772 772 #endif 773 773 } -
trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp
r90356 r90373 252 252 type = InspectorPageAgent::XHRResource; 253 253 254 m_resourcesData->responseReceived(identifier, m_pageAgent->frameId(loader->frame()), response .url());254 m_resourcesData->responseReceived(identifier, m_pageAgent->frameId(loader->frame()), response); 255 255 } 256 256 m_resourcesData->setResourceType(identifier, type); 257 257 m_frontend->responseReceived(static_cast<int>(identifier), currentTime(), InspectorPageAgent::resourceTypeString(type), resourceResponse); 258 258 // If we revalidated the resource and got Not modified, send content length following didReceiveResponse 259 // as there will be no calls to didReceive ContentLengthfrom the network stack.259 // as there will be no calls to didReceiveData from the network stack. 260 260 if (cachedResourceSize && response.httpStatusCode() == 304) 261 didReceiveContentLength(identifier, cachedResourceSize, 0); 262 } 263 264 void InspectorResourceAgent::didReceiveContentLength(unsigned long identifier, int dataLength, int encodedDataLength) 265 { 261 didReceiveData(identifier, 0, cachedResourceSize, 0); 262 } 263 264 void InspectorResourceAgent::didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength) 265 { 266 if (data && m_resourcesData->resourceType(identifier) == InspectorPageAgent::OtherResource) 267 m_resourcesData->maybeAddResourceData(identifier, data, dataLength); 268 266 269 m_frontend->dataReceived(static_cast<int>(identifier), currentTime(), dataLength, encodedDataLength); 267 270 } … … 272 275 m_resourcesData->addResourceSharedBuffer(identifier, loader->frameLoader()->documentLoader()->mainResourceData(), loader->frame()->document()->inputEncoding()); 273 276 277 m_resourcesData->maybeDecodeDataToContent(identifier); 278 274 279 if (!finishTime) 275 280 finishTime = currentTime(); … … 298 303 void InspectorResourceAgent::setInitialXHRContent(unsigned long identifier, const String& sourceString) 299 304 { 300 m_resourcesData-> addResourceContent(identifier, sourceString);305 m_resourcesData->setResourceContent(identifier, sourceString); 301 306 } 302 307 … … 399 404 } 400 405 406 // called from Internals for layout test purposes. 407 void InspectorResourceAgent::setResourcesDataSizeLimitsFromInternals(int maximumResourcesContentSize, int maximumSingleResourceContentSize) 408 { 409 m_resourcesData->setResourcesDataSizeLimits(maximumResourcesContentSize, maximumSingleResourceContentSize); 410 } 411 401 412 void InspectorResourceAgent::enable(ErrorString*) 402 413 { … … 438 449 void InspectorResourceAgent::getResourceContent(ErrorString* errorString, unsigned long identifier, String* content, bool* base64Encoded) 439 450 { 440 NetworkResourcesData::ResourceData * resourceData = m_resourcesData->data(identifier);451 NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(identifier); 441 452 if (!resourceData) { 442 453 *errorString = "No resource with given identifier found"; -
trunk/Source/WebCore/inspector/InspectorResourceAgent.h
r89449 r90373 91 91 void markResourceAsCached(unsigned long identifier); 92 92 void didReceiveResponse(unsigned long identifier, DocumentLoader* laoder, const ResourceResponse&); 93 void didReceive ContentLength(unsigned long identifier, int dataLength, int encodedDataLength);93 void didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength); 94 94 void didFinishLoading(unsigned long identifier, DocumentLoader*, double finishTime); 95 95 void didFailLoading(unsigned long identifier, DocumentLoader*, const ResourceError&); … … 113 113 void isBackgroundEventsCollectionEnabled(ErrorString*, bool* enabled); 114 114 void setBackgroundEventsCollectionEnabled(ErrorString*, bool enabled); 115 116 // called from Internals for layout test purposes. 117 void setResourcesDataSizeLimitsFromInternals(int maximumResourcesContentSize, int maximumSingleResourceContentSize); 115 118 116 119 // Called from frontend -
trunk/Source/WebCore/inspector/NetworkResourcesData.cpp
r89349 r90373 30 30 #include "NetworkResourcesData.h" 31 31 32 #include "DOMImplementation.h" 33 #include "SharedBuffer.h" 34 #include "TextResourceDecoder.h" 35 32 36 #if ENABLE(INSPECTOR) 33 37 … … 35 39 // 10MB 36 40 static int maximumResourcesContentSize = 10 * 1000 * 1000; 41 42 // 1MB 43 static int maximumSingleResourceContentSize = 1000 * 1000; 37 44 } 38 45 39 46 namespace WebCore { 47 40 48 41 49 // ResourceData … … 43 51 : m_identifier(identifier) 44 52 , m_loaderId(loaderId) 45 , m_hasContent(false)46 53 , m_isContentPurged(false) 47 54 , m_type(InspectorPageAgent::OtherResource) … … 49 56 } 50 57 51 String NetworkResourcesData::ResourceData::content() 52 { 53 return m_hasContent ? m_contentBuilder.toString() : String(); 54 } 55 56 void NetworkResourcesData::ResourceData::appendContent(const String& content) 57 { 58 m_contentBuilder.append(content); 59 m_hasContent = true; 58 void NetworkResourcesData::ResourceData::setContent(const String& content) 59 { 60 ASSERT(!hasData()); 61 ASSERT(!hasContent()); 62 m_content = content; 60 63 } 61 64 62 65 unsigned NetworkResourcesData::ResourceData::purgeContent() 63 66 { 64 unsigned length = m_contentBuilder.toStringPreserveCapacity().length(); 65 m_contentBuilder.clear(); 67 unsigned result = 0; 68 if (hasData()) { 69 ASSERT(!hasContent()); 70 result = m_dataBuffer->size(); 71 m_dataBuffer = nullptr; 72 } 73 74 if (hasContent()) { 75 ASSERT(!hasData()); 76 result = 2 * m_content.length(); 77 m_content = String(); 78 } 66 79 m_isContentPurged = true; 67 m_hasContent = false; 68 return length; 80 return result; 81 } 82 83 void NetworkResourcesData::ResourceData::createDecoder(const String& mimeType, const String& textEncodingName) 84 { 85 if (!textEncodingName.isEmpty()) 86 m_decoder = TextResourceDecoder::create("text/plain", textEncodingName); 87 else if (mimeType == "text/plain") 88 m_decoder = TextResourceDecoder::create("text/plain", "ISO-8859-1"); 89 else if (mimeType == "text/html") 90 m_decoder = TextResourceDecoder::create("text/html", "UTF-8"); 91 else if (DOMImplementation::isXMLMIMEType(mimeType)) { 92 m_decoder = TextResourceDecoder::create("application/xml"); 93 m_decoder->useLenientXMLDecoding(); 94 } 95 } 96 97 int NetworkResourcesData::ResourceData::dataLength() const 98 { 99 return m_dataBuffer ? m_dataBuffer->size() : 0; 100 } 101 102 void NetworkResourcesData::ResourceData::appendData(const char* data, int dataLength) 103 { 104 ASSERT(!hasContent()); 105 if (!m_dataBuffer) 106 m_dataBuffer = SharedBuffer::create(data, dataLength); 107 else 108 m_dataBuffer->append(data, dataLength); 109 } 110 111 int NetworkResourcesData::ResourceData::decodeDataToContent() 112 { 113 ASSERT(!hasContent()); 114 int dataLength = m_dataBuffer->size(); 115 m_content = m_decoder->decode(m_dataBuffer->data(), m_dataBuffer->size()); 116 m_dataBuffer = nullptr; 117 return 2 * m_content.length() - dataLength; 69 118 } 70 119 … … 72 121 NetworkResourcesData::NetworkResourcesData() 73 122 : m_contentSize(0) 123 , m_maximumResourcesContentSize(maximumResourcesContentSize) 124 , m_maximumSingleResourceContentSize(maximumSingleResourceContentSize) 74 125 { 75 126 } … … 86 137 } 87 138 88 void NetworkResourcesData::responseReceived(unsigned long identifier, const String& frameId, const String& url)139 void NetworkResourcesData::responseReceived(unsigned long identifier, const String& frameId, const ResourceResponse& response) 89 140 { 90 141 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); … … 92 143 return; 93 144 resourceData->setFrameId(frameId); 94 resourceData->setUrl(url); 145 resourceData->setUrl(response.url()); 146 resourceData->createDecoder(response.mimeType(), response.textEncodingName()); 95 147 } 96 148 … … 111 163 } 112 164 113 void NetworkResourcesData::addResourceContent(unsigned long identifier, const String& content) 114 { 115 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); 116 if (!resourceData) 165 void NetworkResourcesData::setResourceContent(unsigned long identifier, const String& content) 166 { 167 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); 168 if (!resourceData) 169 return; 170 int dataLength = 2 * content.length(); 171 if (dataLength > m_maximumSingleResourceContentSize) 117 172 return; 118 173 if (resourceData->isContentPurged()) 119 174 return; 120 if (ensureFreeSpace(content.length()) && !resourceData->isContentPurged()) { 121 if (!resourceData->hasContent()) 122 m_identifiersDeque.append(identifier); 123 resourceData->appendContent(content); 124 m_contentSize += content.length(); 125 } 175 if (ensureFreeSpace(dataLength) && !resourceData->isContentPurged()) { 176 m_identifiersDeque.append(identifier); 177 resourceData->setContent(content); 178 m_contentSize += dataLength; 179 } 180 } 181 182 void NetworkResourcesData::maybeAddResourceData(unsigned long identifier, const char* data, int dataLength) 183 { 184 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); 185 if (!resourceData) 186 return; 187 if (!resourceData->decoder()) 188 return; 189 if (resourceData->dataLength() + dataLength > m_maximumSingleResourceContentSize) 190 m_contentSize -= resourceData->purgeContent(); 191 if (resourceData->isContentPurged()) 192 return; 193 if (ensureFreeSpace(dataLength) && !resourceData->isContentPurged()) { 194 m_identifiersDeque.append(identifier); 195 resourceData->appendData(data, dataLength); 196 m_contentSize += dataLength; 197 } 198 } 199 200 void NetworkResourcesData::maybeDecodeDataToContent(unsigned long identifier) 201 { 202 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); 203 if (!resourceData) 204 return; 205 if (!resourceData->hasData()) 206 return; 207 m_contentSize += resourceData->decodeDataToContent(); 208 int dataLength = 2 * resourceData->content().length(); 209 if (dataLength > m_maximumSingleResourceContentSize) 210 m_contentSize -= resourceData->purgeContent(); 126 211 } 127 212 … … 144 229 } 145 230 146 NetworkResourcesData::ResourceData * NetworkResourcesData::data(unsigned long identifier)231 NetworkResourcesData::ResourceData const* NetworkResourcesData::data(unsigned long identifier) 147 232 { 148 233 return m_identifierToResourceDataMap.get(identifier); … … 152 237 { 153 238 m_identifiersDeque.clear(); 239 m_contentSize = 0; 154 240 155 241 ResourceDataMap preservedMap; … … 167 253 } 168 254 255 void NetworkResourcesData::setResourcesDataSizeLimits(int maximumResourcesContentSize, int maximumSingleResourceContentSize) 256 { 257 clear(); 258 m_maximumResourcesContentSize = maximumResourcesContentSize; 259 m_maximumSingleResourceContentSize = maximumSingleResourceContentSize; 260 } 261 262 169 263 void NetworkResourcesData::ensureNoDataForIdentifier(unsigned long identifier) 170 264 { 171 265 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); 172 266 if (resourceData) { 173 if (resourceData->hasContent() )267 if (resourceData->hasContent() || resourceData->hasData()) 174 268 m_contentSize -= resourceData->purgeContent(); 175 269 delete resourceData; … … 180 274 bool NetworkResourcesData::ensureFreeSpace(int size) 181 275 { 182 if (size > m aximumResourcesContentSize)276 if (size > m_maximumResourcesContentSize) 183 277 return false; 184 278 185 while (size > m aximumResourcesContentSize - m_contentSize) {279 while (size > m_maximumResourcesContentSize - m_contentSize) { 186 280 unsigned long identifier = m_identifiersDeque.takeFirst(); 187 281 ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier); -
trunk/Source/WebCore/inspector/NetworkResourcesData.h
r89604 r90373 32 32 #include "CachedResourceHandle.h" 33 33 #include "InspectorPageAgent.h" 34 #include "SharedBuffer.h"35 34 36 35 #include <wtf/Deque.h> … … 44 43 namespace WebCore { 45 44 45 class CachedResource; 46 46 class SharedBuffer; 47 class CachedResource;47 class TextResourceDecoder; 48 48 49 49 class NetworkResourcesData { 50 50 public: 51 51 class ResourceData { 52 friend class NetworkResourcesData; 52 53 public: 53 54 ResourceData(unsigned long identifier, const String& loaderId); … … 62 63 void setUrl(const String& url) { m_url = url; } 63 64 64 bool hasContent() const { return m_hasContent; }65 String content() ;66 void appendContent(const String&);65 bool hasContent() const { return !m_content.isNull(); } 66 String content() const { return m_content; } 67 void setContent(const String&); 67 68 68 69 bool isContentPurged() const { return m_isContentPurged; } 69 void setIsContentPurged(bool isContentPurged) { m_isContentPurged = isContentPurged; }70 70 unsigned purgeContent(); 71 71 … … 73 73 void setType(InspectorPageAgent::ResourceType type) { m_type = type; } 74 74 75 String textEncodingName() const { return m_textEncodingName; } 76 void setTextEncodingName(const String& textEncodingName) { m_textEncodingName = textEncodingName; } 77 78 TextResourceDecoder* decoder() const { return m_decoder.get(); } 79 void createDecoder(const String& mimeType, const String& textEncodingName); 80 75 81 PassRefPtr<SharedBuffer> buffer() const { return m_buffer; } 76 82 void setBuffer(PassRefPtr<SharedBuffer> buffer) { m_buffer = buffer; } 77 78 String textEncodingName() const { return m_textEncodingName; }79 void setTextEncodingName(const String& textEncodingName) { m_textEncodingName = textEncodingName; }80 83 81 84 CachedResource* cachedResource() const { return m_cachedResource.get(); } … … 83 86 84 87 private: 88 bool hasData() const { return m_dataBuffer; } 89 int dataLength() const; 90 void appendData(const char* data, int dataLength); 91 int decodeDataToContent(); 92 85 93 unsigned long m_identifier; 86 94 String m_loaderId; 87 95 String m_frameId; 88 96 String m_url; 89 bool m_hasContent;90 StringBuilder m_contentBuilder;97 String m_content; 98 RefPtr<SharedBuffer> m_dataBuffer; 91 99 bool m_isContentPurged; 92 100 InspectorPageAgent::ResourceType m_type; 93 101 102 String m_textEncodingName; 103 RefPtr<TextResourceDecoder> m_decoder; 104 94 105 RefPtr<SharedBuffer> m_buffer; 95 String m_textEncodingName;96 106 CachedResourceHandle<CachedResource> m_cachedResource; 97 107 }; … … 102 112 103 113 void resourceCreated(unsigned long identifier, const String& loaderId); 104 void responseReceived(unsigned long identifier, const String& frameId, const String& url);114 void responseReceived(unsigned long identifier, const String& frameId, const ResourceResponse&); 105 115 void setResourceType(unsigned long identifier, InspectorPageAgent::ResourceType); 106 116 InspectorPageAgent::ResourceType resourceType(unsigned long identifier); 107 void addResourceContent(unsigned long identifier, const String& content); 117 void setResourceContent(unsigned long identifier, const String& content); 118 void maybeAddResourceData(unsigned long identifier, const char* data, int dataLength); 119 void maybeDecodeDataToContent(unsigned long identifier); 108 120 void addCachedResource(unsigned long identifier, CachedResource*); 109 121 void addResourceSharedBuffer(unsigned long identifier, PassRefPtr<SharedBuffer>, const String& textEncodingName); 110 ResourceData * data(unsigned long identifier);122 ResourceData const* data(unsigned long identifier); 111 123 void clear(const String& preservedLoaderId = String()); 124 125 void setResourcesDataSizeLimits(int maximumResourcesContentSize, int maximumSingleResourceContentSize); 112 126 113 127 private: … … 120 134 ResourceDataMap m_identifierToResourceDataMap; 121 135 int m_contentSize; 136 int m_maximumResourcesContentSize; 137 int m_maximumSingleResourceContentSize; 122 138 }; 123 139 -
trunk/Source/WebCore/inspector/front-end/Resource.js
r90022 r90373 783 783 }, 784 784 785 get contentEncoded() 786 { 787 return this._contentEncoded; 788 }, 789 785 790 get contentTimestamp() 786 791 { -
trunk/Source/WebCore/inspector/front-end/ResourcePreviewView.js
r89662 r90373 40 40 if (!this.resource.content) { 41 41 if (!this._emptyView) { 42 this._emptyView = new WebInspector.EmptyView(WebInspector.UIString("This request has no preview available."));42 this._emptyView = this._createEmptyView(); 43 43 this._emptyView.show(this.element); 44 44 } … … 48 48 delete this._emptyView; 49 49 } 50 if (!this._ view)51 this._ view = this._createInnerView();52 this._ view.show(this.element);50 if (!this._previewView) 51 this._previewView = this._createPreviewView(); 52 this._previewView.show(this.element); 53 53 } 54 54 }, 55 55 56 _createInnerView: function() 56 _createEmptyView: function() 57 { 58 return new WebInspector.EmptyView(WebInspector.UIString("This request has no preview available.")); 59 }, 60 61 _createPreviewView: function() 57 62 { 58 63 if (this.resource.hasErrorStatusCode() && this.resource.content) … … 67 72 if (this._responseView.sourceView) 68 73 return this._responseView.sourceView; 74 75 if (this.resource.category === WebInspector.resourceCategories.other) 76 return this._createEmptyView(); 69 77 70 78 return WebInspector.ResourceView.nonSourceViewForResource(this.resource); -
trunk/Source/WebCore/inspector/front-end/ResourceView.js
r87383 r90373 52 52 case WebInspector.resourceCategories.stylesheets: 53 53 return true; 54 case WebInspector.resourceCategories.other: 55 return resource.content && !resource.contentEncoded; 54 56 default: 55 57 return false; -
trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp
r90340 r90373 230 230 #if ENABLE(INSPECTOR) 231 231 if (m_preflightRequestIdentifier) 232 InspectorInstrumentation::didReceive ContentLength(m_document->frame(), m_preflightRequestIdentifier, 0, dataLength);232 InspectorInstrumentation::didReceiveData(m_document->frame(), m_preflightRequestIdentifier, 0, 0, dataLength); 233 233 #endif 234 234 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r90346 r90373 1383 1383 ResourceError error; 1384 1384 requestFromDelegate(request, identifier, error); 1385 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, ResourceResponse(url, String(), -1, String(), String()), -1, -1, error);1385 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, ResourceResponse(url, String(), -1, String(), String()), 0, -1, -1, error); 1386 1386 1387 1387 url = request.url(); … … 1781 1781 // However, with today's computers and networking speeds, this won't happen in practice. 1782 1782 // Could be an issue with a giant local file. 1783 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, static_cast<int>(response.expectedContentLength()), 0, error);1783 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, 0, static_cast<int>(response.expectedContentLength()), 0, error); 1784 1784 } 1785 1785 … … 2591 2591 } 2592 2592 int encodedDataLength = response.resourceLoadInfo() ? static_cast<int>(response.resourceLoadInfo()->encodedDataLength) : -1; 2593 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data. size(), encodedDataLength, error);2593 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data.data(), data.size(), encodedDataLength, error); 2594 2594 return identifier; 2595 2595 } … … 2884 2884 requestFromDelegate(request, identifier, error); 2885 2885 InspectorInstrumentation::markResourceAsCached(page, identifier); 2886 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, resource->response(), resource->encodedSize(), 0, error);2886 notifier()->sendRemainingDelegateMessages(m_documentLoader.get(), identifier, resource->response(), 0, resource->encodedSize(), 0, error); 2887 2887 } 2888 2888 -
trunk/Source/WebCore/loader/ResourceLoadNotifier.cpp
r89163 r90373 80 80 page->progress()->incrementProgress(loader->identifier(), data, dataLength); 81 81 82 dispatchDidReceive ContentLength(loader->documentLoader(), loader->identifier(), dataLength, encodedDataLength);82 dispatchDidReceiveData(loader->documentLoader(), loader->identifier(), data, dataLength, encodedDataLength); 83 83 } 84 84 … … 131 131 } 132 132 133 void ResourceLoadNotifier::dispatchDidReceive ContentLength(DocumentLoader* loader, unsigned long identifier, int dataLength, int encodedDataLength)133 void ResourceLoadNotifier::dispatchDidReceiveData(DocumentLoader* loader, unsigned long identifier, const char* data, int dataLength, int encodedDataLength) 134 134 { 135 135 m_frame->loader()->client()->dispatchDidReceiveContentLength(loader, identifier, dataLength); 136 136 137 InspectorInstrumentation::didReceive ContentLength(m_frame, identifier, dataLength, encodedDataLength);137 InspectorInstrumentation::didReceiveData(m_frame, identifier, data, dataLength, encodedDataLength); 138 138 } 139 139 … … 153 153 } 154 154 155 void ResourceLoadNotifier::sendRemainingDelegateMessages(DocumentLoader* loader, unsigned long identifier, const ResourceResponse& response, int dataLength, int encodedDataLength, const ResourceError& error)155 void ResourceLoadNotifier::sendRemainingDelegateMessages(DocumentLoader* loader, unsigned long identifier, const ResourceResponse& response, const char* data, int dataLength, int encodedDataLength, const ResourceError& error) 156 156 { 157 157 if (!response.isNull()) … … 159 159 160 160 if (dataLength > 0) 161 dispatchDidReceive ContentLength(loader, identifier, dataLength, encodedDataLength);161 dispatchDidReceiveData(loader, identifier, data, dataLength, encodedDataLength); 162 162 163 163 if (error.isNull()) -
trunk/Source/WebCore/loader/ResourceLoadNotifier.h
r84260 r90373 61 61 void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse); 62 62 void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&); 63 void dispatchDidReceive ContentLength(DocumentLoader*, unsigned long identifier, int dataLength, int encodedDataLength);63 void dispatchDidReceiveData(DocumentLoader*, unsigned long identifier, const char* data, int dataLength, int encodedDataLength); 64 64 void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier, double finishTime); 65 65 void dispatchTransferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*); 66 66 67 void sendRemainingDelegateMessages(DocumentLoader*, unsigned long identifier, const ResourceResponse&, int dataLength, int encodedDataLength, const ResourceError&);67 void sendRemainingDelegateMessages(DocumentLoader*, unsigned long identifier, const ResourceResponse&, const char* data, int dataLength, int encodedDataLength, const ResourceError&); 68 68 69 69 private: -
trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp
r89163 r90373 572 572 573 573 #if ENABLE(INSPECTOR) 574 InspectorInstrumentation::didReceive ContentLength(m_frame, m_currentResourceIdentifier, length, 0);574 InspectorInstrumentation::didReceiveData(m_frame, m_currentResourceIdentifier, 0, length, 0); 575 575 #endif 576 576 -
trunk/Source/WebCore/testing/Internals.cpp
r89682 r90373 31 31 #include "Element.h" 32 32 #include "ExceptionCode.h" 33 #include "InspectorController.h" 34 #include "Page.h" 33 35 #include "RenderTreeAsText.h" 34 36 #include "ShadowContentElement.h" … … 124 126 } 125 127 128 #if ENABLE(INSPECTOR) 129 void Internals::setInspectorResourcesDataSizeLimits(Document* document, int maximumResourcesContentSize, int maximumSingleResourceContentSize, ExceptionCode& ec) 130 { 131 if (!document || !document->page() || !document->page()->inspectorController()) { 132 ec = INVALID_ACCESS_ERR; 133 return; 134 } 135 document->page()->inspectorController()->setResourcesDataSizeLimitsFromInternals(maximumResourcesContentSize, maximumSingleResourceContentSize); 126 136 } 137 #endif 138 139 } -
trunk/Source/WebCore/testing/Internals.h
r89682 r90373 54 54 PassRefPtr<Element> createShadowContentElement(Document*, ExceptionCode&); 55 55 56 #if ENABLE(INSPECTOR) 57 void setInspectorResourcesDataSizeLimits(Document*, int maximumResourcesContentSize, int maximumSingleResourceContentSize, ExceptionCode&); 58 #endif 59 56 60 private: 57 61 Internals(); -
trunk/Source/WebCore/testing/Internals.idl
r89682 r90373 36 36 DOMString shadowPseudoId(in Element element) raises (DOMException); 37 37 Element createShadowContentElement(in Document document) raises(DOMException); 38 39 void setInspectorResourcesDataSizeLimits(in Document document, in long maximumResourcesContentSize, in long maximumSingleResourceContentSize) raises(DOMException); 38 40 }; 39 41 } -
trunk/Source/WebKit2/ChangeLog
r90372 r90373 1 2011-07-04 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Show content for plugin requests in network panel. 4 https://bugs.webkit.org/show_bug.cgi?id=30080 5 6 Reviewed by Pavel Feldman. 7 8 * win/WebKit2.def: 9 * win/WebKit2CFLite.def: 10 1 11 2011-07-04 Anders Carlsson <andersca@apple.com> 2 12 -
trunk/Source/WebKit2/win/WebKit2.def
r89682 r90373 145 145 ?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z 146 146 ?jsStringSlowCase@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@AAV?$HashMap@PAVStringImpl@WTF@@V?$Weak@VJSString@JSC@@@JSC@@UStringHash@2@U?$HashTraits@PAVStringImpl@WTF@@@2@U?$HashTraits@V?$Weak@VJSString@JSC@@@JSC@@@2@@WTF@@PAVStringImpl@6@@Z 147 ?page@Document@WebCore@@QBEPAVPage@2@XZ 147 148 ?removeShadowRoot@Element@WebCore@@QAEXXZ 148 149 ?setDOMException@WebCore@@YAXPAVExecState@JSC@@H@Z 150 ?setResourcesDataSizeLimitsFromInternals@InspectorController@WebCore@@QAEXHH@Z 149 151 ?shadowRoot@Element@WebCore@@QBEPAVShadowRoot@2@XZ 150 152 ?toDocument@WebCore@@YAPAVDocument@1@VJSValue@JSC@@@Z -
trunk/Source/WebKit2/win/WebKit2CFLite.def
r89757 r90373 138 138 ?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z 139 139 ?jsStringSlowCase@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@AAV?$HashMap@PAVStringImpl@WTF@@V?$Weak@VJSString@JSC@@@JSC@@UStringHash@2@U?$HashTraits@PAVStringImpl@WTF@@@2@U?$HashTraits@V?$Weak@VJSString@JSC@@@JSC@@@2@@WTF@@PAVStringImpl@6@@Z 140 ?page@Document@WebCore@@QBEPAVPage@2@XZ 140 141 ?removeShadowRoot@Element@WebCore@@QAEXXZ 141 142 ?setDOMException@WebCore@@YAXPAVExecState@JSC@@H@Z 143 ?setResourcesDataSizeLimitsFromInternals@InspectorController@WebCore@@QAEXHH@Z 142 144 ?shadowRoot@Element@WebCore@@QBEPAVShadowRoot@2@XZ 143 145 ?toDocument@WebCore@@YAPAVDocument@1@VJSValue@JSC@@@Z -
trunk/Source/autotools/symbols.filter
r89682 r90373 37 37 _ZN7WebCore16jsStringSlowCaseEPN3JSC9ExecStateERN3WTF7HashMapIPNS3_10StringImplENS0_4WeakINS0_8JSStringEEENS3_10StringHashENS3_10HashTraitsIS6_EENSB_IS9_EEEES6_; 38 38 _ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE; 39 _ZN7WebCore19InspectorController39setResourcesDataSizeLimitsFromInternalsEii; 39 40 _ZN7WebCore20ShadowContentElement6createEPNS_8DocumentE; 40 41 _ZN7WebCore21getCachedDOMStructureEPNS_17JSDOMGlobalObjectEPKN3JSC9ClassInfoE; … … 51 52 _ZNK7WebCore6JSNode21pushEventHandlerScopeEPN3JSC9ExecStateEPNS1_14ScopeChainNodeE; 52 53 _ZNK7WebCore7Element10shadowRootEv; 54 _ZNK7WebCore8Document4pageEv; 53 55 local: 54 56 _Z*;
Note: See TracChangeset
for help on using the changeset viewer.