WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
[PATCH] Proposed change.
resources_cookies_messages (text/plain), 41.88 KB, created by
Pavel Feldman
on 2010-10-28 10:37:50 PDT
(
hide
)
Description:
[PATCH] Proposed change.
Filename:
MIME Type:
Creator:
Pavel Feldman
Created:
2010-10-28 10:37:50 PDT
Size:
41.88 KB
patch
obsolete
>diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog >index 489569f..f333ae6 100644 >--- a/WebCore/ChangeLog >+++ b/WebCore/ChangeLog >@@ -1,3 +1,56 @@ >+2010-10-28 Pavel Feldman <pfeldman@chromium.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Web Inspector: make legacy resource tracking optional in the native code, >+ make cookeis work against new resource manager. >+ https://bugs.webkit.org/show_bug.cgi?id=48532 >+ >+ * inspector/InspectorCSSStore.cpp: >+ (WebCore::InspectorCSSStore::resourceStyleSheetText): >+ * inspector/InspectorController.cpp: >+ (WebCore::InspectorController::InspectorController): >+ (WebCore::InspectorController::~InspectorController): >+ (WebCore::InspectorController::connectFrontend): >+ (WebCore::InspectorController::releaseFrontendLifetimeAgents): >+ (WebCore::InspectorController::populateScriptObjects): >+ (WebCore::InspectorController::unbindAllResources): >+ (WebCore::InspectorController::didCommitLoad): >+ (WebCore::InspectorController::frameDetachedFromParent): >+ (WebCore::InspectorController::didLoadResourceFromMemoryCache): >+ (WebCore::InspectorController::identifierForInitialRequest): >+ (WebCore::InspectorController::willSendRequest): >+ (WebCore::InspectorController::markResourceAsCached): >+ (WebCore::InspectorController::didReceiveResponse): >+ (WebCore::InspectorController::didReceiveContentLength): >+ (WebCore::InspectorController::didFinishLoading): >+ (WebCore::InspectorController::didFailLoading): >+ (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest): >+ (WebCore::InspectorController::scriptImported): >+ (WebCore::InspectorController::setResourceTrackingEnabled): >+ (WebCore::InspectorController::getCookies): >+ (WebCore::InspectorController::deleteCookie): >+ (WebCore::InspectorController::didCreateWebSocket): >+ (WebCore::InspectorController::willSendWebSocketHandshakeRequest): >+ (WebCore::InspectorController::didReceiveWebSocketHandshakeResponse): >+ (WebCore::InspectorController::didCloseWebSocket): >+ (WebCore::InspectorController::breakpointsSettingKey): >+ (WebCore::InspectorController::getResourceContent): >+ * inspector/InspectorController.h: >+ * inspector/InspectorResource.cpp: >+ (WebCore::InspectorResource::updateScriptObject): >+ (WebCore::InspectorResource::markFailed): >+ * inspector/InspectorResource.h: >+ * inspector/InspectorResourceAgent.cpp: >+ (WebCore::populateObjectWithFrameResources): >+ * inspector/front-end/Resource.js: >+ (WebInspector.Resource.prototype._mimeTypeIsConsistentWithType): >+ * inspector/front-end/ResourceManager.js: >+ (WebInspector.ResourceManager.prototype._updateResourceWithResponse): >+ (WebInspector.ResourceManager.prototype.didFailLoading): >+ * inspector/front-end/inspector.js: >+ (WebInspector.updateResource): >+ > 2010-10-27 Pavel Feldman <pfeldman@chromium.org> > > Reviewed by Timothy Hatcher. >diff --git a/WebCore/English.lproj/localizedStrings.js b/WebCore/English.lproj/localizedStrings.js >index 7403b22573b4fe81af5a550d29dfea364e13f3b0..c432f73f4afd46bbabc74538ccffa795a66a4202 100644 >GIT binary patch >delta 424 >zcmaDfk@?b8<_(WdOnzakTJOe?$dJj9!;s35!l1xV!jKOnbAV(bm|p}GF9z~T8HyN^ >zfov<FtSV4Mi6IuqvISx#269cXX5eDTnXD(IOokgu7&3saQ2@Fm73i`uFsT4!fm~Yv >zbZ;Ke^$;JG1APZltpM~9NPP*AE&=+d7|6?KNCT3pla2T!2igrnU<YY{16LCmsKCGh >E0DCA;nE(I) > >delta 9 >RcmcaKmHE*`<_(Wd000>A1v>x$ > >diff --git a/WebCore/inspector/InspectorCSSStore.cpp b/WebCore/inspector/InspectorCSSStore.cpp >index e0b658f..b75f11b 100644 >--- a/WebCore/inspector/InspectorCSSStore.cpp >+++ b/WebCore/inspector/InspectorCSSStore.cpp >@@ -44,6 +44,7 @@ > #include "HTMLHeadElement.h" > #include "InspectorController.h" > #include "InspectorResource.h" >+#include "InspectorResourceAgent.h" > #include "Node.h" > #include "PlatformString.h" > #include "SharedBuffer.h" >@@ -142,7 +143,7 @@ String InspectorCSSStore::styleSheetText(long styleSheetId) > > bool InspectorCSSStore::resourceStyleSheetText(CSSStyleSheet* styleSheet, String* result) > { >- return m_inspectorController->resourceContentForURL(styleSheet->finalURL(), styleSheet->document(), result); >+ return InspectorResourceAgent::resourceContent(styleSheet->document()->frame(), styleSheet->finalURL(), result); > } > > String InspectorCSSStore::inlineStyleSheetText(CSSStyleSheet* styleSheet) >diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp >index 31f4505..26907a4 100644 >--- a/WebCore/inspector/InspectorController.cpp >+++ b/WebCore/inspector/InspectorController.cpp >@@ -68,7 +68,6 @@ > #include "InspectorFrontendClient.h" > #include "InspectorInstrumentation.h" > #include "InspectorProfilerAgent.h" >-#include "InspectorResource.h" > #include "InspectorResourceAgent.h" > #include "InspectorState.h" > #include "InspectorStorageAgent.h" >@@ -101,6 +100,11 @@ > #include <wtf/ListHashSet.h> > #include <wtf/RefCounted.h> > #include <wtf/StdLibExtras.h> >+#include <wtf/UnusedParam.h> >+ >+#if LEGACY_RESOURCE_TRACKING_ENABLED >+#include "InspectorResource.h" >+#endif > > #if ENABLE(DATABASE) > #include "Database.h" >@@ -140,6 +144,7 @@ InspectorController::InspectorController(Page* page, InspectorClient* client) > , m_client(client) > , m_openingFrontend(false) > , m_cssStore(new InspectorCSSStore(this)) >+ , m_mainResourceIdentifier(0) > , m_loadEventTime(-1.0) > , m_domContentEventTime(-1.0) > , m_expiredConsoleMessageCount(0) >@@ -168,7 +173,9 @@ InspectorController::~InspectorController() > ASSERT(!m_inspectedPage); > ASSERT(!m_highlightedNode); > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > deleteAllValues(m_frameResources); >+#endif > > releaseFrontendLifetimeAgents(); > >@@ -225,10 +232,12 @@ bool InspectorController::searchingForNodeInPage() const > return m_state->getBoolean(InspectorState::searchingForNode); > } > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > bool InspectorController::resourceTrackingEnabled() const > { > return m_state->getBoolean(InspectorState::resourceTrackingEnabled); > } >+#endif > > void InspectorController::getInspectorState(RefPtr<InspectorObject>* state) > { >@@ -482,8 +491,10 @@ void InspectorController::connectFrontend() > releaseFrontendLifetimeAgents(); > m_frontend = new InspectorFrontend(m_client); > m_domAgent = InspectorDOMAgent::create(m_cssStore.get(), m_frontend.get()); >- // FIXME: enable resource agent once front-end is ready. >- // m_resourceAgent = InspectorResourceAgent::create(m_inspectedPage, m_frontend.get()); >+ >+#if !LEGACY_RESOURCE_TRACKING_ENABLED >+ m_resourceAgent = InspectorResourceAgent::create(m_inspectedPage, m_frontend.get()); >+#endif > > #if ENABLE(DATABASE) > m_storageAgent = InspectorStorageAgent::create(m_frontend.get()); >@@ -591,7 +602,9 @@ void InspectorController::disconnectFrontend() > > void InspectorController::releaseFrontendLifetimeAgents() > { >+#if !LEGACY_RESOURCE_TRACKING_ENABLED > m_resourceAgent.clear(); >+#endif > > // m_domAgent is RefPtr. Remove DOM listeners first to ensure that there are > // no references to the DOM agent from the DOM tree. >@@ -626,9 +639,12 @@ void InspectorController::populateScriptObjects() > m_frontend->profilerWasEnabled(); > #endif > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > ResourcesMap::iterator resourcesEnd = m_resources.end(); > for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) > it->second->updateScriptObject(m_frontend.get()); >+#endif >+ > if (m_domContentEventTime != -1.0) > m_frontend->domContentEventFired(m_domContentEventTime); > if (m_loadEventTime != -1.0) >@@ -691,10 +707,12 @@ void InspectorController::restoreProfiler() > > void InspectorController::unbindAllResources() > { >+#if LEGACY_RESOURCE_TRACKING_ENABLED > ResourcesMap::iterator resourcesEnd = m_resources.end(); > for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) > it->second->releaseScriptObject(0); >- >+#endif >+ > #if ENABLE(DATABASE) > DatabaseResourcesMap::iterator databasesEnd = m_databaseResources.end(); > for (DatabaseResourcesMap::iterator it = m_databaseResources.begin(); it != databasesEnd; ++it) >@@ -709,6 +727,7 @@ void InspectorController::unbindAllResources() > m_timelineAgent->reset(); > } > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > void InspectorController::pruneResources(ResourcesMap* resourceMap, DocumentLoader* loaderToKeep) > { > ASSERT_ARG(resourceMap, resourceMap); >@@ -727,15 +746,17 @@ void InspectorController::pruneResources(ResourcesMap* resourceMap, DocumentLoad > } > } > } >+#endif > > void InspectorController::didCommitLoad(DocumentLoader* loader) > { > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->didCommitLoad(loader); >- >+#if !LEGACY_RESOURCE_TRACKING_ENABLED >+ m_resourceAgent->didCommitLoad(loader); >+#endif >+ > ASSERT(m_inspectedPage); > > if (loader->frame() == m_inspectedPage->mainFrame()) { >@@ -782,6 +803,7 @@ void InspectorController::didCommitLoad(DocumentLoader* loader) > #endif > > if (m_frontend) { >+#if LEGACY_RESOURCE_TRACKING_ENABLED > if (!loader->frameLoader()->isLoadingFromCachedPage()) { > ASSERT(m_mainResource && m_mainResource->isSameLoader(loader)); > // We don't add the main resource until its load is committed. This is >@@ -795,14 +817,18 @@ void InspectorController::didCommitLoad(DocumentLoader* loader) > // identifierForInitialRequest. > m_mainResource = 0; > } >+#endif >+ m_mainResourceIdentifier = 0; > m_frontend->didCommitLoad(); > m_domAgent->setDocument(m_inspectedPage->mainFrame()->document()); > } > } > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > for (Frame* frame = loader->frame(); frame; frame = frame->tree()->traverseNext(loader->frame())) > if (ResourcesMap* resourceMap = m_frameResources.get(frame)) > pruneResources(resourceMap, loader); >+#endif > } > > void InspectorController::frameDetachedFromParent(Frame* rootFrame) >@@ -810,14 +836,16 @@ void InspectorController::frameDetachedFromParent(Frame* rootFrame) > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->frameDetachedFromParent(rootFrame); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > for (Frame* frame = rootFrame; frame; frame = frame->tree()->traverseNext(rootFrame)) > if (ResourcesMap* resourceMap = m_frameResources.get(frame)) > removeAllResources(resourceMap); >+#else >+ m_resourceAgent->frameDetachedFromParent(rootFrame); >+#endif > } > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > void InspectorController::addResource(InspectorResource* resource) > { > m_resources.set(resource->identifier(), resource); >@@ -873,24 +901,14 @@ InspectorResource* InspectorController::getTrackedResource(unsigned long identif > > return 0; > } >- >-InspectorResource* InspectorController::resourceForURL(const String& url) >-{ >- for (InspectorController::ResourcesMap::iterator resIt = m_resources.begin(); resIt != m_resources.end(); ++resIt) { >- if (resIt->second->requestURL().string() == url) >- return resIt->second.get(); >- } >- return 0; >-} >+#endif > > void InspectorController::didLoadResourceFromMemoryCache(DocumentLoader* loader, const CachedResource* cachedResource) > { > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->didLoadResourceFromMemoryCache(loader, cachedResource); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > // If the resource URL is already known, we don't need to add it again since this is just a cached load. > if (m_knownResources.contains(cachedResource->url())) > return; >@@ -912,6 +930,9 @@ void InspectorController::didLoadResourceFromMemoryCache(DocumentLoader* loader, > > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didLoadResourceFromMemoryCache(loader, cachedResource); >+#endif > } > > void InspectorController::identifierForInitialRequest(unsigned long identifier, DocumentLoader* loader, const ResourceRequest& request) >@@ -920,10 +941,11 @@ void InspectorController::identifierForInitialRequest(unsigned long identifier, > return; > ASSERT(m_inspectedPage); > >- if (m_resourceAgent) >- m_resourceAgent->identifierForInitialRequest(identifier, request.url(), loader); >- > bool isMainResource = isMainResourceLoader(loader, request.url()); >+ if (isMainResource) >+ m_mainResourceIdentifier = identifier; >+ >+#if LEGACY_RESOURCE_TRACKING_ENABLED > > ensureSettingsLoaded(); > if (!isMainResource && !resourceTrackingEnabled()) >@@ -940,6 +962,9 @@ void InspectorController::identifierForInitialRequest(unsigned long identifier, > > if (m_frontend && loader->frameLoader()->isLoadingFromCachedPage() && resource == m_mainResource) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->identifierForInitialRequest(identifier, request.url(), loader); >+#endif > } > > void InspectorController::mainResourceFiredDOMContentEvent(DocumentLoader* loader, const KURL& url) >@@ -976,23 +1001,22 @@ void InspectorController::willSendRequest(unsigned long identifier, ResourceRequ > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->willSendRequest(identifier, request, redirectResponse); >+ request.setReportLoadTiming(true); >+ // Only enable raw headers if front-end is attached, as otherwise we may lack >+ // permissions to fetch the headers. >+ if (m_frontend) >+ request.setReportRawHeaders(true); >+ >+ bool isMainResource = m_mainResourceIdentifier == identifier; > >- bool isMainResource = (m_mainResource && m_mainResource->identifier() == identifier); > if (m_timelineAgent) > m_timelineAgent->willSendResourceRequest(identifier, isMainResource, request); > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; > >- request.setReportLoadTiming(true); >- // Only enable raw headers if front-end is attached, as otherwise we may lack >- // permissions to fetch the headers. >- if (m_frontend) >- request.setReportRawHeaders(true); >- > if (!redirectResponse.isNull()) { > // Redirect may have empty URL and we'd like to not crash with invalid HashMap entry. > // See http/tests/misc/will-send-request-returns-null-on-redirect.html >@@ -1018,6 +1042,9 @@ void InspectorController::willSendRequest(unsigned long identifier, ResourceRequ > > if (resource != m_mainResource && m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->willSendRequest(identifier, request, redirectResponse); >+#endif > } > > void InspectorController::markResourceAsCached(unsigned long identifier) >@@ -1025,11 +1052,12 @@ void InspectorController::markResourceAsCached(unsigned long identifier) > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->markResourceAsCached(identifier); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > if (RefPtr<InspectorResource> resource = getTrackedResource(identifier)) > resource->markAsCached(); >+#else >+ m_resourceAgent->markResourceAsCached(identifier); >+#endif > } > > void InspectorController::didReceiveResponse(unsigned long identifier, DocumentLoader* loader, const ResourceResponse& response) >@@ -1037,19 +1065,17 @@ void InspectorController::didReceiveResponse(unsigned long identifier, DocumentL > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->didReceiveResponse(identifier, loader, response); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > if (RefPtr<InspectorResource> resource = getTrackedResource(identifier)) { > resource->updateResponse(response); > > if (resource != m_mainResource && m_frontend) > resource->updateScriptObject(m_frontend.get()); > } >- if (response.httpStatusCode() >= 400) { >- String message = makeString("Failed to load resource: the server responded with a status of ", String::number(response.httpStatusCode()), " (", response.httpStatusText(), ')'); >- addMessageToConsole(OtherMessageSource, LogMessageType, ErrorMessageLevel, message, 0, response.url().string()); >- } >+ UNUSED_PARAM(loader); >+#else >+ m_resourceAgent->didReceiveResponse(identifier, loader, response); >+#endif > } > > void InspectorController::didReceiveContentLength(unsigned long identifier, int lengthReceived) >@@ -1057,9 +1083,7 @@ void InspectorController::didReceiveContentLength(unsigned long identifier, int > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->didReceiveContentLength(identifier, lengthReceived); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; >@@ -1068,6 +1092,9 @@ void InspectorController::didReceiveContentLength(unsigned long identifier, int > > if (resource != m_mainResource && m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didReceiveContentLength(identifier, lengthReceived); >+#endif > } > > void InspectorController::didFinishLoading(unsigned long identifier, double finishTime) >@@ -1075,12 +1102,10 @@ void InspectorController::didFinishLoading(unsigned long identifier, double fini > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->didFinishLoading(identifier, finishTime); >- > if (m_timelineAgent) > m_timelineAgent->didFinishLoadingResource(identifier, false, finishTime); > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; >@@ -1090,6 +1115,9 @@ void InspectorController::didFinishLoading(unsigned long identifier, double fini > // No need to mute this event for main resource since it happens after did commit load. > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didFinishLoading(identifier, finishTime); >+#endif > } > > void InspectorController::didFailLoading(unsigned long identifier, const ResourceError& error) >@@ -1097,27 +1125,23 @@ void InspectorController::didFailLoading(unsigned long identifier, const Resourc > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->didFailLoading(identifier, error); >- > if (m_timelineAgent) > m_timelineAgent->didFinishLoadingResource(identifier, true, 0); > >- String message = "Failed to load resource"; >- if (!error.localizedDescription().isEmpty()) >- message += ": " + error.localizedDescription(); >- addMessageToConsole(OtherMessageSource, LogMessageType, ErrorMessageLevel, message, 0, error.failingURL()); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; > >- resource->markFailed(); >+ resource->markFailed(error.localizedDescription()); > resource->endTiming(0); > > // No need to mute this event for main resource since it happens after did commit load. > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didFailLoading(identifier, error); >+#endif > } > > void InspectorController::resourceRetrievedByXMLHttpRequest(unsigned long identifier, const String& sourceString, const String& url, const String& sendURL, unsigned sendLineNumber) >@@ -1125,12 +1149,10 @@ void InspectorController::resourceRetrievedByXMLHttpRequest(unsigned long identi > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->setOverrideContent(identifier, sourceString, InspectorResource::XHR); >- > if (m_state->getBoolean(InspectorState::monitoringXHR)) > addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, "XHR finished loading: \"" + url + "\".", sendLineNumber, sendURL); > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > if (!resourceTrackingEnabled()) > return; > >@@ -1142,6 +1164,9 @@ void InspectorController::resourceRetrievedByXMLHttpRequest(unsigned long identi > > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->setOverrideContent(identifier, sourceString, InspectorResource::XHR); >+#endif > } > > void InspectorController::scriptImported(unsigned long identifier, const String& sourceString) >@@ -1149,9 +1174,7 @@ void InspectorController::scriptImported(unsigned long identifier, const String& > if (!enabled()) > return; > >- if (m_resourceAgent) >- m_resourceAgent->setOverrideContent(identifier, sourceString, InspectorResource::Script); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > if (!resourceTrackingEnabled()) > return; > >@@ -1163,8 +1186,12 @@ void InspectorController::scriptImported(unsigned long identifier, const String& > > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->setOverrideContent(identifier, sourceString, InspectorResource::Script); >+#endif > } > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > void InspectorController::setResourceTrackingEnabled(bool enable) > { > if (!enabled()) >@@ -1173,9 +1200,11 @@ void InspectorController::setResourceTrackingEnabled(bool enable) > ASSERT(m_inspectedPage); > m_state->setBoolean(InspectorState::resourceTrackingEnabled, enable); > } >+#endif > > void InspectorController::setResourceTrackingEnabled(bool enable, bool always, bool* newState) > { >+#if LEGACY_RESOURCE_TRACKING_ENABLED > *newState = enable; > > if (always) >@@ -1189,6 +1218,11 @@ void InspectorController::setResourceTrackingEnabled(bool enable, bool always, b > > if (enable) > reloadPage(); >+#else >+ UNUSED_PARAM(enable); >+ UNUSED_PARAM(always); >+ UNUSED_PARAM(newState); >+#endif > } > > void InspectorController::ensureSettingsLoaded() >@@ -1348,33 +1382,35 @@ void InspectorController::getCookies(RefPtr<InspectorArray>* cookies, WTF::Strin > // always return the same true/false value. > bool rawCookiesImplemented = false; > >- ResourcesMap::iterator resourcesEnd = m_resources.end(); >- for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) { >- Document* document = it->second->frame()->document(); >- Vector<Cookie> docCookiesList; >- rawCookiesImplemented = getRawCookies(document, it->second->requestURL(), docCookiesList); >- >- if (!rawCookiesImplemented) { >- // FIXME: We need duplication checking for the String representation of cookies. >- ExceptionCode ec = 0; >- stringCookiesList += document->cookie(ec); >- // Exceptions are thrown by cookie() in sandboxed frames. That won't happen here >- // because "document" is the document of the main frame of the page. >- ASSERT(!ec); >- } else { >- int cookiesSize = docCookiesList.size(); >- for (int i = 0; i < cookiesSize; i++) { >- if (!rawCookiesList.contains(docCookiesList[i])) >- rawCookiesList.add(docCookiesList[i]); >+ for (Frame* frame = m_inspectedPage->mainFrame(); frame; frame = frame->tree()->traverseNext(m_inspectedPage->mainFrame())) { >+ Document* document = frame->document(); >+ const CachedResourceLoader::DocumentResourceMap& allResources = document->cachedResourceLoader()->allCachedResources(); >+ CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end(); >+ for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) { >+ Vector<Cookie> docCookiesList; >+ rawCookiesImplemented = getRawCookies(document, KURL(ParsedURLString, it->second->url()), docCookiesList); >+ >+ if (!rawCookiesImplemented) { >+ // FIXME: We need duplication checking for the String representation of cookies. >+ ExceptionCode ec = 0; >+ stringCookiesList += document->cookie(ec); >+ // Exceptions are thrown by cookie() in sandboxed frames. That won't happen here >+ // because "document" is the document of the main frame of the page. >+ ASSERT(!ec); >+ } else { >+ int cookiesSize = docCookiesList.size(); >+ for (int i = 0; i < cookiesSize; i++) { >+ if (!rawCookiesList.contains(docCookiesList[i])) >+ rawCookiesList.add(docCookiesList[i]); >+ } > } > } > } > > if (rawCookiesImplemented) > *cookies = buildArrayForCookies(rawCookiesList); >- else { >+ else > *cookiesString = stringCookiesList; >- } > } > > PassRefPtr<InspectorArray> InspectorController::buildArrayForCookies(ListHashSet<Cookie>& cookiesList) >@@ -1406,11 +1442,14 @@ PassRefPtr<InspectorObject> InspectorController::buildObjectForCookie(const Cook > > void InspectorController::deleteCookie(const String& cookieName, const String& domain) > { >- ResourcesMap::iterator resourcesEnd = m_resources.end(); >- for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) { >- Document* document = it->second->frame()->document(); >- if (document->url().host() == domain) >- WebCore::deleteCookie(document, it->second->requestURL(), cookieName); >+ for (Frame* frame = m_inspectedPage->mainFrame(); frame; frame = frame->tree()->traverseNext(m_inspectedPage->mainFrame())) { >+ Document* document = frame->document(); >+ if (document->url().host() != domain) >+ continue; >+ const CachedResourceLoader::DocumentResourceMap& allResources = document->cachedResourceLoader()->allCachedResources(); >+ CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end(); >+ for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) >+ WebCore::deleteCookie(document, KURL(ParsedURLString, it->second->url()), cookieName); > } > } > >@@ -1508,21 +1547,21 @@ void InspectorController::didCreateWebSocket(unsigned long identifier, const KUR > return; > ASSERT(m_inspectedPage); > >- if (m_resourceAgent) >- m_resourceAgent->didCreateWebSocket(identifier, requestURL); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = InspectorResource::createWebSocket(identifier, requestURL, documentURL); > addResource(resource.get()); > > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didCreateWebSocket(identifier, requestURL); >+ UNUSED_PARAM(documentURL); >+#endif > } > > void InspectorController::willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest& request) > { >- if (m_resourceAgent) >- m_resourceAgent->willSendWebSocketHandshakeRequest(identifier, request); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; >@@ -1530,13 +1569,14 @@ void InspectorController::willSendWebSocketHandshakeRequest(unsigned long identi > resource->updateWebSocketRequest(request); > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->willSendWebSocketHandshakeRequest(identifier, request); >+#endif > } > > void InspectorController::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse& response) > { >- if (m_resourceAgent) >- m_resourceAgent->didReceiveWebSocketHandshakeResponse(identifier, response); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; >@@ -1546,13 +1586,14 @@ void InspectorController::didReceiveWebSocketHandshakeResponse(unsigned long ide > resource->updateWebSocketResponse(response); > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didReceiveWebSocketHandshakeResponse(identifier, response); >+#endif > } > > void InspectorController::didCloseWebSocket(unsigned long identifier) > { >- if (m_resourceAgent) >- m_resourceAgent->didCloseWebSocket(identifier); >- >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = getTrackedResource(identifier); > if (!resource) > return; >@@ -1560,6 +1601,9 @@ void InspectorController::didCloseWebSocket(unsigned long identifier) > resource->endTiming(0); > if (m_frontend) > resource->updateScriptObject(m_frontend.get()); >+#else >+ m_resourceAgent->didCloseWebSocket(identifier); >+#endif > } > #endif // ENABLE(WEB_SOCKETS) > >@@ -1773,9 +1817,7 @@ void InspectorController::didEvaluateForTestInFrontend(long callId, const String > String InspectorController::breakpointsSettingKey() > { > DEFINE_STATIC_LOCAL(String, keyPrefix, ("breakpoints:")); >- if (!m_mainResource) >- return ""; >- return keyPrefix + InspectorDebuggerAgent::md5Base16(m_mainResource->requestURL()); >+ return keyPrefix + InspectorDebuggerAgent::md5Base16(m_inspectedPage->mainFrame()->loader()->url().string()); > } > > PassRefPtr<InspectorValue> InspectorController::loadBreakpoints() >@@ -2107,55 +2149,18 @@ void InspectorController::setInspectorExtensionAPI(const String& source) > > void InspectorController::getResourceContent(unsigned long identifier, bool encode, String* content) > { >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> resource = m_resources.get(identifier); > if (!resource) { > *content = String(); > return; > } > *content = encode ? resource->sourceBytes() : resource->sourceString(); >-} >- >-bool InspectorController::resourceContentForURL(const KURL& url, Document* frameDocument, String* result) >-{ >- if (!frameDocument) >- return false; >- >- String textEncodingName; >- RefPtr<SharedBuffer> buffer; >- if (equalIgnoringFragmentIdentifier(url, frameDocument->frame()->loader()->documentLoader()->requestURL())) { >- textEncodingName = frameDocument->inputEncoding(); >- buffer = frameDocument->frame()->loader()->provisionalDocumentLoader()->mainResourceData(); >- } else { >- const String& urlString = url.string(); >- CachedResource* cachedResource = frameDocument->cachedResourceLoader()->cachedResource(urlString); >- if (!cachedResource) >- cachedResource = cache()->resourceForURL(urlString); >- >- ASSERT(cachedResource); // FIXME(apavlov): This might be too aggressive. >- >- bool isUnpurgeable = true; >- if (cachedResource->isPurgeable()) { >- // If the resource is purgeable then make it unpurgeable to get >- // its data. This might fail, in which case we return an >- // empty String. >- if (!cachedResource->makePurgeable(false)) >- isUnpurgeable = false; >- } >- if (isUnpurgeable) { >- textEncodingName = cachedResource->encoding(); >- buffer = cachedResource->data(); >- } >- } >- >- if (buffer) { >- TextEncoding encoding(textEncodingName); >- if (!encoding.isValid()) >- encoding = WindowsLatin1Encoding(); >- *result = encoding.decode(buffer->data(), buffer->size()); >- return true; >- } >- >- return false; >+#else >+ UNUSED_PARAM(identifier); >+ UNUSED_PARAM(encode); >+ UNUSED_PARAM(content); >+#endif > } > > void InspectorController::reloadPage() >diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h >index 18db07f..917968c 100644 >--- a/WebCore/inspector/InspectorController.h >+++ b/WebCore/inspector/InspectorController.h >@@ -67,7 +67,6 @@ class InspectorFrontend; > class InspectorFrontendClient; > class InspectorObject; > class InspectorProfilerAgent; >-class InspectorResource; > class InspectorResourceAgent; > class InspectorState; > class InspectorStorageAgent; >@@ -87,6 +86,12 @@ class SharedBuffer; > class Storage; > class StorageArea; > >+#define LEGACY_RESOURCE_TRACKING_ENABLED 1 >+ >+#if LEGACY_RESOURCE_TRACKING_ENABLED >+class InspectorResource; >+#endif >+ > #if ENABLE(OFFLINE_WEB_APPLICATIONS) > class InspectorApplicationCacheAgent; > #endif >@@ -98,8 +103,10 @@ class WebSocketHandshakeResponse; > > class InspectorController : public Noncopyable { > public: >+#if LEGACY_RESOURCE_TRACKING_ENABLED > typedef HashMap<unsigned long, RefPtr<InspectorResource> > ResourcesMap; > typedef HashMap<RefPtr<Frame>, ResourcesMap*> FrameResourcesMap; >+#endif > typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap; > typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap; > >@@ -169,9 +176,11 @@ public: > void resourceRetrievedByXMLHttpRequest(unsigned long identifier, const String& sourceString, const String& url, const String& sendURL, unsigned sendLineNumber); > void scriptImported(unsigned long identifier, const String& sourceString); > >- void setResourceTrackingEnabled(bool enabled); > void setResourceTrackingEnabled(bool enabled, bool always, bool* newState); >+#if LEGACY_RESOURCE_TRACKING_ENABLED >+ void setResourceTrackingEnabled(bool enabled); > bool resourceTrackingEnabled() const; >+#endif > > void ensureSettingsLoaded(); > >@@ -214,9 +223,10 @@ public: > void didCloseWebSocket(unsigned long identifier); > #endif > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > const ResourcesMap& resources() const { return m_resources; } >- InspectorResource* resourceForURL(const String& url); >- bool resourceContentForURL(const KURL& url, Document* loaderDocument, String* result); >+#endif >+ > bool hasFrontend() const { return m_frontend; } > > void drawNodeHighlight(GraphicsContext&) const; >@@ -316,13 +326,14 @@ private: > > void addConsoleMessage(PassOwnPtr<ConsoleMessage>); > >+#if LEGACY_RESOURCE_TRACKING_ENABLED > void addResource(InspectorResource*); > void removeResource(InspectorResource*); > InspectorResource* getTrackedResource(unsigned long identifier); >- void getResourceContent(unsigned long identifier, bool encode, String* content); >- > void pruneResources(ResourcesMap*, DocumentLoader* loaderToKeep = 0); > void removeAllResources(ResourcesMap* map) { pruneResources(map); } >+#endif >+ void getResourceContent(unsigned long identifier, bool encode, String* content); > > bool isMainResourceLoader(DocumentLoader* loader, const KURL& requestUrl); > >@@ -341,7 +352,6 @@ private: > bool m_openingFrontend; > OwnPtr<InspectorFrontend> m_frontend; > RefPtr<InspectorDOMAgent> m_domAgent; >- RefPtr<InspectorResourceAgent> m_resourceAgent; > RefPtr<InspectorStorageAgent> m_storageAgent; > OwnPtr<InspectorCSSStore> m_cssStore; > OwnPtr<InspectorTimelineAgent> m_timelineAgent; >@@ -350,12 +360,15 @@ private: > #if ENABLE(OFFLINE_WEB_APPLICATIONS) > OwnPtr<InspectorApplicationCacheAgent> m_applicationCacheAgent; > #endif >- > RefPtr<Node> m_nodeToFocus; >+#if LEGACY_RESOURCE_TRACKING_ENABLED > RefPtr<InspectorResource> m_mainResource; > ResourcesMap m_resources; > HashSet<String> m_knownResources; > FrameResourcesMap m_frameResources; >+#endif >+ RefPtr<InspectorResourceAgent> m_resourceAgent; >+ unsigned long m_mainResourceIdentifier; > double m_loadEventTime; > double m_domContentEventTime; > Vector<OwnPtr<ConsoleMessage> > m_consoleMessages; >diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp >index 05b1bff..9b3f95d 100644 >--- a/WebCore/inspector/InspectorResource.cpp >+++ b/WebCore/inspector/InspectorResource.cpp >@@ -302,6 +302,7 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend) > > if (m_changes.hasChange(CompletionChange)) { > jsonObject->setBoolean("failed", m_failed); >+ jsonObject->setString("localizedFailDescription", m_localizedFailDescription); > jsonObject->setBoolean("finished", m_finished); > jsonObject->setBoolean("didCompletionChange", true); > } >@@ -436,9 +437,10 @@ void InspectorResource::endTiming(double actualEndTime) > m_changes.set(CompletionChange); > } > >-void InspectorResource::markFailed() >+void InspectorResource::markFailed(const String& localizedDescription) > { > m_failed = true; >+ m_localizedFailDescription = localizedDescription; > m_changes.set(CompletionChange); > } > >diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h >index aa6001f..aa4c3b1 100644 >--- a/WebCore/inspector/InspectorResource.h >+++ b/WebCore/inspector/InspectorResource.h >@@ -116,7 +116,7 @@ namespace WebCore { > void startTiming(); > void endTiming(double actualEndTime); > >- void markFailed(); >+ void markFailed(const String& localizedDescription); > void addLength(int lengthReceived); > > private: >@@ -175,6 +175,7 @@ namespace WebCore { > bool m_cached; > bool m_finished; > bool m_failed; >+ String m_localizedFailDescription; > int m_length; > int m_responseStatusCode; > String m_responseStatusText; >diff --git a/WebCore/inspector/InspectorResourceAgent.cpp b/WebCore/inspector/InspectorResourceAgent.cpp >index 9f8062f..2e965b6 100644 >--- a/WebCore/inspector/InspectorResourceAgent.cpp >+++ b/WebCore/inspector/InspectorResourceAgent.cpp >@@ -263,10 +263,8 @@ static void populateObjectWithFrameResources(Frame* frame, PassRefPtr<InspectorO > CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end(); > for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) { > CachedResource* cachedResource = it->second.get(); >- if (cachedResource) { >- RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(frame->loader()->documentLoader(), *cachedResource); >- subresources->pushValue(cachedResourceObject); >- } >+ RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(frame->loader()->documentLoader(), *cachedResource); >+ subresources->pushValue(cachedResourceObject); > } > } > >diff --git a/WebCore/inspector/front-end/Resource.js b/WebCore/inspector/front-end/Resource.js >index 2df7b73..7112062 100644 >--- a/WebCore/inspector/front-end/Resource.js >+++ b/WebCore/inspector/front-end/Resource.js >@@ -565,6 +565,9 @@ WebInspector.Resource.prototype = { > || this.type === WebInspector.Resource.Type.WebSocket) > return true; > >+ if (!this.mimeType) >+ return true; // Might be not known for cached resources with null responses. >+ > if (this.mimeType in WebInspector.MIMETypes) > return this.type in WebInspector.MIMETypes[this.mimeType]; > >@@ -594,6 +597,32 @@ WebInspector.Resource.prototype = { > null, > null); > break; >+ case WebInspector.Warnings.FailedToLoad.id: >+ if (this.failed) { >+ msg = new WebInspector.ConsoleMessage(WebInspector.ConsoleMessage.MessageSource.Other, >+ WebInspector.ConsoleMessage.MessageType.Log, >+ WebInspector.ConsoleMessage.MessageLevel.Error, >+ -1, >+ this.url, >+ null, >+ 1, >+ String.sprintf(WebInspector.Warnings.FailedToLoad.message, this.localizedFailDescription), >+ null, >+ null); >+ break; >+ case WebInspector.Warnings.FailedToLoadWithStatus.id: >+ if (this.statusCode >= 400) { >+ msg = new WebInspector.ConsoleMessage(WebInspector.ConsoleMessage.MessageSource.Other, >+ WebInspector.ConsoleMessage.MessageType.Log, >+ WebInspector.ConsoleMessage.MessageLevel.Error, >+ -1, >+ this.url, >+ null, >+ 1, >+ String.sprintf(WebInspector.Warnings.FailedToLoadWithStatus.message, this.statusCode, this.statusText), >+ null, >+ null); >+ break; > } > > if (msg) >diff --git a/WebCore/inspector/front-end/ResourceManager.js b/WebCore/inspector/front-end/ResourceManager.js >index b181958..43a655e 100644 >--- a/WebCore/inspector/front-end/ResourceManager.js >+++ b/WebCore/inspector/front-end/ResourceManager.js >@@ -154,6 +154,9 @@ WebInspector.ResourceManager.prototype = { > > _updateResourceWithResponse: function(resource, response) > { >+ if (resource.isNull) >+ return; >+ > resource.mimeType = response.mimeType; > resource.expectedContentLength = response.expectedContentLength; > resource.textEncodingName = response.textEncodingName; >@@ -210,6 +213,7 @@ WebInspector.ResourceManager.prototype = { > return; > > resource.failed = true; >+ resource.localizedFailDescription = localizedDescription; > resource.finished = true; > resource.endTime = time; > >diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js >index 85ca3f6..9d5b297 100644 >--- a/WebCore/inspector/front-end/inspector.js >+++ b/WebCore/inspector/front-end/inspector.js >@@ -584,6 +584,8 @@ WebInspector.doLoadedDone = function() > > this.Warnings = { > IncorrectMIMEType: {id: 0, message: WebInspector.UIString("Resource interpreted as %s but transferred with MIME type %s.")} >+ FailedToLoad: {id: 1, message: WebInspector.UIString("Failed to load resource: %s")} >+ FailedToLoadWithStatus: {id: 2, message: WebInspector.UIString("Failed to load resource: the server responded with a status of %s (%s)")} > }; > > this.addMainEventListeners(document); >@@ -1318,6 +1320,7 @@ WebInspector.updateResource = function(payload) > > if (payload.didCompletionChange) { > resource.failed = payload.failed; >+ resource.localizedFailDescription = payload.localizedFailDescription; > resource.finished = payload.finished; > if (this.panels.audits) > this.panels.audits.resourceFinished(resource);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 48532
:
72206
|
72207