Changeset 52154 in webkit
- Timestamp:
- Dec 15, 2009 8:36:24 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r52153 r52154 1 2009-12-15 Pavel Feldman <pfeldman@chromium.org> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Do not lose HTTP redirect information, display it 6 in the Resources Panel. 7 8 https://bugs.webkit.org/show_bug.cgi?id=32551 9 10 * inspector/InspectorController.cpp: 11 (WebCore::InspectorController::populateScriptObjects): 12 (WebCore::InspectorController::didCommitLoad): 13 (WebCore::InspectorController::didLoadResourceFromMemoryCache): 14 (WebCore::InspectorController::identifierForInitialRequest): 15 (WebCore::InspectorController::willSendRequest): 16 (WebCore::InspectorController::didReceiveResponse): 17 (WebCore::InspectorController::didReceiveContentLength): 18 (WebCore::InspectorController::didFinishLoading): 19 (WebCore::InspectorController::didFailLoading): 20 * inspector/InspectorFrontend.cpp: 21 * inspector/InspectorFrontend.h: 22 * inspector/InspectorResource.cpp: 23 (WebCore::InspectorResource::InspectorResource): 24 (WebCore::InspectorResource::appendRedirect): 25 (WebCore::InspectorResource::updateScriptObject): 26 (WebCore::InspectorResource::releaseScriptObject): 27 (WebCore::InspectorResource::type): 28 * inspector/InspectorResource.h: 29 (WebCore::InspectorResource::): 30 (WebCore::InspectorResource::Changes::setAll): 31 * inspector/front-end/inspector.js: 32 (WebInspector._addResource): 33 (WebInspector.updateResource): 34 1 35 2009-12-15 Holger Hans Peter Freyther <zecke@selfish.org> 2 36 -
trunk/WebCore/inspector/InspectorController.cpp
r51846 r52154 649 649 ResourcesMap::iterator resourcesEnd = m_resources.end(); 650 650 for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) 651 it->second-> createScriptObject(m_frontend.get());651 it->second->updateScriptObject(m_frontend.get()); 652 652 653 653 unsigned messageCount = m_consoleMessages.size(); … … 759 759 // list of resources for the page they are navigating away from. 760 760 if (windowVisible()) 761 m_mainResource-> createScriptObject(m_frontend.get());761 m_mainResource->updateScriptObject(m_frontend.get()); 762 762 } else { 763 763 // Pages loaded from the page cache are committed before … … 854 854 return; 855 855 856 RefPtr<InspectorResource> resource = InspectorResource::createCached(m_inspectedPage->progress()->createUniqueIdentifier() 856 RefPtr<InspectorResource> resource = InspectorResource::createCached(m_inspectedPage->progress()->createUniqueIdentifier(), loader, cachedResource); 857 857 858 858 if (isMainResource) { … … 864 864 865 865 if (windowVisible()) 866 resource-> createScriptObject(m_frontend.get());866 resource->updateScriptObject(m_frontend.get()); 867 867 } 868 868 … … 890 890 891 891 if (windowVisible() && loader->frameLoader()->isLoadingFromCachedPage() && resource == m_mainResource) 892 resource-> createScriptObject(m_frontend.get());892 resource->updateScriptObject(m_frontend.get()); 893 893 } 894 894 … … 932 932 return; 933 933 934 if (!redirectResponse.isNull()) { 935 // We always store last redirect by the original id key. Rest of the redirects are stored within the last one. 936 unsigned long id = m_inspectedPage->progress()->createUniqueIdentifier(); 937 RefPtr<InspectorResource> withRedirect = resource->appendRedirect(id, request, redirectResponse); 938 removeResource(resource.get()); 939 addResource(withRedirect.get()); 940 if (isMainResource) { 941 m_mainResource = withRedirect; 942 withRedirect->markMainResource(); 943 } 944 resource = withRedirect; 945 } 946 934 947 resource->startTiming(); 935 936 if (!redirectResponse.isNull()) {937 resource->updateRequest(request);938 resource->updateResponse(redirectResponse);939 }940 941 948 if (resource != m_mainResource && windowVisible()) 942 resource-> createScriptObject(m_frontend.get());949 resource->updateScriptObject(m_frontend.get()); 943 950 } 944 951 … … 955 962 resource->markResponseReceivedTime(); 956 963 957 if ( windowVisible())964 if (resource != m_mainResource && windowVisible()) 958 965 resource->updateScriptObject(m_frontend.get()); 959 966 } … … 967 974 resource->addLength(lengthReceived); 968 975 969 if ( windowVisible())976 if (resource != m_mainResource && windowVisible()) 970 977 resource->updateScriptObject(m_frontend.get()); 971 978 } … … 980 987 return; 981 988 982 removeResource(resource.get());983 984 989 resource->endTiming(); 985 990 986 addResource(resource.get()); 987 988 if (windowVisible()) 991 if (resource != m_mainResource && windowVisible()) 989 992 resource->updateScriptObject(m_frontend.get()); 990 993 } … … 999 1002 return; 1000 1003 1001 removeResource(resource.get());1002 1003 1004 resource->markFailed(); 1004 1005 resource->endTiming(); 1005 1006 1006 addResource(resource.get()); 1007 1008 if (windowVisible()) 1007 if (resource != m_mainResource && windowVisible()) 1009 1008 resource->updateScriptObject(m_frontend.get()); 1010 1009 } -
trunk/WebCore/inspector/InspectorFrontend.cpp
r51839 r52154 107 107 } 108 108 109 bool InspectorFrontend::addResource(unsigned long identifier, const ScriptObject& resourceObj)110 {111 ScriptFunctionCall function(m_scriptState, m_webInspector, "dispatch");112 function.appendArgument("addResource");113 function.appendArgument(identifier);114 function.appendArgument(resourceObj);115 bool hadException = false;116 function.call(hadException);117 return !hadException;118 }119 120 109 bool InspectorFrontend::updateResource(unsigned long identifier, const ScriptObject& resourceObj) 121 110 { -
trunk/WebCore/inspector/InspectorFrontend.h
r51839 r52154 68 68 void clearConsoleMessages(); 69 69 70 bool addResource(unsigned long identifier, const ScriptObject& resourceObj);71 70 bool updateResource(unsigned long identifier, const ScriptObject& resourceObj); 72 71 void removeResource(unsigned long identifier); -
trunk/WebCore/inspector/InspectorResource.cpp
r51440 r52154 51 51 , m_loader(loader) 52 52 , m_frame(loader->frame()) 53 , m_scriptObjectCreated(false)54 53 , m_expectedContentLength(0) 55 54 , m_cached(false) … … 71 70 } 72 71 72 PassRefPtr<InspectorResource> InspectorResource::appendRedirect(unsigned long identifier, const ResourceRequest& request, const ResourceResponse& redirectResponse) 73 { 74 // Last redirect is always a container of all previous ones. Pass this container here. 75 RefPtr<InspectorResource> redirect = InspectorResource::create(m_identifier, m_loader.get()); 76 redirect->m_redirects = m_redirects; 77 redirect->m_redirects.append(this); 78 redirect->m_changes.set(RedirectsChange); 79 redirect->updateRequest(request); 80 81 m_identifier = identifier; 82 m_redirects.clear(); 83 updateResponse(redirectResponse); 84 markResponseReceivedTime(); 85 endTiming(); 86 return redirect; 87 } 88 73 89 PassRefPtr<InspectorResource> InspectorResource::createCached(unsigned long identifier, DocumentLoader* loader, const CachedResource* cachedResource) 74 90 { … … 127 143 } 128 144 129 void InspectorResource::createScriptObject(InspectorFrontend* frontend)130 {131 if (!m_scriptObjectCreated) {132 ScriptObject jsonObject = frontend->newScriptObject();133 ScriptObject requestHeaders = frontend->newScriptObject();134 populateHeadersObject(&requestHeaders, m_requestHeaderFields);135 jsonObject.set("requestHeaders", requestHeaders);136 jsonObject.set("documentURL", m_frame->document()->url().string());137 jsonObject.set("requestURL", requestURL());138 jsonObject.set("host", m_requestURL.host());139 jsonObject.set("path", m_requestURL.path());140 jsonObject.set("lastPathComponent", m_requestURL.lastPathComponent());141 jsonObject.set("isMainResource", m_isMainResource);142 jsonObject.set("cached", m_cached);143 jsonObject.set("requestMethod", m_requestMethod);144 jsonObject.set("requestFormData", m_requestFormData);145 if (!frontend->addResource(m_identifier, jsonObject))146 return;147 148 m_scriptObjectCreated = true;149 m_changes.clear(RequestChange);150 }151 updateScriptObject(frontend);152 }153 145 154 146 void InspectorResource::updateScriptObject(InspectorFrontend* frontend) 155 147 { 156 if (!m_scriptObjectCreated)157 return;158 159 148 if (m_changes.hasChange(NoChange)) 160 149 return; … … 164 153 jsonObject.set("url", requestURL()); 165 154 jsonObject.set("documentURL", m_frame->document()->url().string()); 166 jsonObject.set(" domain", m_requestURL.host());155 jsonObject.set("host", m_requestURL.host()); 167 156 jsonObject.set("path", m_requestURL.path()); 168 157 jsonObject.set("lastPathComponent", m_requestURL.lastPathComponent()); … … 174 163 jsonObject.set("requestFormData", m_requestFormData); 175 164 jsonObject.set("didRequestChange", true); 165 jsonObject.set("cached", m_cached); 176 166 } 177 167 … … 217 207 jsonObject.set("didTimingChange", true); 218 208 } 219 if (!frontend->updateResource(m_identifier, jsonObject)) 220 return; 221 m_changes.clearAll(); 209 210 if (m_changes.hasChange(RedirectsChange)) { 211 for (size_t i = 0; i < m_redirects.size(); ++i) 212 m_redirects[i]->updateScriptObject(frontend); 213 } 214 215 if (frontend->updateResource(m_identifier, jsonObject)) 216 m_changes.clearAll(); 222 217 } 223 218 224 219 void InspectorResource::releaseScriptObject(InspectorFrontend* frontend, bool callRemoveResource) 225 220 { 226 if (!m_scriptObjectCreated)227 return;228 229 m_scriptObjectCreated = false;230 221 m_changes.setAll(); 231 222 … … 234 225 235 226 frontend->removeResource(m_identifier); 227 228 for (size_t i = 0; i < m_redirects.size(); ++i) 229 m_redirects[i]->releaseScriptObject(frontend, callRemoveResource); 236 230 } 237 231 … … 289 283 290 284 return cachedResourceType(); 291 292 285 } 293 286 -
trunk/WebCore/inspector/InspectorResource.h
r51439 r52154 78 78 ~InspectorResource(); 79 79 80 void createScriptObject(InspectorFrontend* frontend);80 PassRefPtr<InspectorResource> appendRedirect(unsigned long identifier, const ResourceRequest&, const ResourceResponse& redirectResponse); 81 81 void updateScriptObject(InspectorFrontend* frontend); 82 82 void releaseScriptObject(InspectorFrontend* frontend, bool callRemoveResource); … … 119 119 LengthChange = 8, 120 120 CompletionChange = 16, 121 TimingChange = 32 121 TimingChange = 32, 122 RedirectsChange = 64 122 123 }; 123 124 … … 139 140 } 140 141 141 inline void setAll() { m_change = static_cast<ChangeType>( 63); }142 inline void setAll() { m_change = static_cast<ChangeType>(127); } 142 143 inline void clearAll() { m_change = NoChange; } 143 144 … … 160 161 String m_mimeType; 161 162 String m_suggestedFilename; 162 bool m_scriptObjectCreated;163 163 long long m_expectedContentLength; 164 164 bool m_cached; … … 177 177 String m_requestMethod; 178 178 String m_requestFormData; 179 Vector<RefPtr<InspectorResource> > m_redirects; 179 180 }; 180 181 -
trunk/WebCore/inspector/front-end/inspector.js
r52099 r52154 963 963 } 964 964 965 WebInspector. addResource = function(identifier, payload)965 WebInspector._addResource = function(identifier, payload) 966 966 { 967 967 var resource = new WebInspector.Resource( 968 968 payload.requestHeaders, 969 payload. requestURL,969 payload.url, 970 970 payload.documentURL, 971 971 payload.host, … … 973 973 payload.lastPathComponent, 974 974 identifier, 975 payload. isMainResource,975 payload.mainResource, 976 976 payload.cached, 977 977 payload.requestMethod, … … 989 989 if (match) 990 990 this.addCookieDomain(match[1].toLowerCase() === "file" ? "" : match[2]); 991 992 return resource; 991 993 } 992 994 … … 1011 1013 { 1012 1014 var resource = this.resources[identifier]; 1013 if (!resource) 1014 return; 1015 if (!resource) { 1016 resource = this._addResource(identifier, payload); 1017 // Request info is already populated in constructor. 1018 payload.didRequestChange = false; 1019 } 1015 1020 1016 1021 if (payload.didRequestChange) { 1017 1022 resource.url = payload.url; 1018 resource. domain= payload.domain;1023 resource.host = payload.domain; 1019 1024 resource.path = payload.path; 1020 1025 resource.lastPathComponent = payload.lastPathComponent;
Note: See TracChangeset
for help on using the changeset viewer.