Changeset 64547 in webkit
- Timestamp:
- Aug 3, 2010 6:07:01 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r64546 r64547 1 2010-08-03 Yury Semikhatsky <yurys@chromium.org> 2 3 Reviewed by Pavel Feldman. 4 5 Web Inspector: use InspectorValue to push resource data to the frontend 6 https://bugs.webkit.org/show_bug.cgi?id=43414 7 8 * inspector/Inspector.idl: 9 * inspector/InspectorController.cpp: 10 (WebCore::InspectorController::disconnectFrontend): destroy remote frontend object along with the old inspector frontend 11 (WebCore::InspectorController::populateScriptObjects): 12 (WebCore::InspectorController::didCommitLoad): 13 (WebCore::InspectorController::didLoadResourceFromMemoryCache): 14 (WebCore::InspectorController::identifierForInitialRequest): 15 (WebCore::InspectorController::mainResourceFiredDOMContentEvent): 16 (WebCore::InspectorController::mainResourceFiredLoadEvent): 17 (WebCore::InspectorController::willSendRequest): 18 (WebCore::InspectorController::didReceiveResponse): 19 (WebCore::InspectorController::didReceiveContentLength): 20 (WebCore::InspectorController::didFinishLoading): 21 (WebCore::InspectorController::didFailLoading): 22 (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest): 23 (WebCore::InspectorController::scriptImported): 24 * inspector/InspectorFrontend.cpp: 25 * inspector/InspectorFrontend.h: 26 * inspector/InspectorResource.cpp: 27 (WebCore::buildHeadersObject): 28 (WebCore::buildObjectForTiming): 29 (WebCore::InspectorResource::updateScriptObject): 30 * inspector/InspectorResource.h: 31 * inspector/front-end/inspector.js: 32 (WebInspector.updateResource): 33 1 34 2010-08-03 Sheriff Bot <webkit.review.bot@gmail.com> 2 35 -
trunk/WebCore/inspector/Inspector.idl
r64540 r64547 45 45 [notify] void updateConsoleMessageExpiredCount(out unsigned long count); 46 46 [notify] void updateConsoleMessageRepeatCount(out unsigned long count); 47 [notify] void updateResource(out Value resource); 48 [notify] void removeResource(out unsigned long resourceId); 47 49 #if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER 48 50 [notify] void pausedScript(out Value callFrames); … … 63 65 [handler=Controller] void enableResourceTracking(in boolean always); 64 66 [handler=Controller] void disableResourceTracking(in boolean always); 65 [handler=Controller] void getResourceContent(in long callId, in unsigned long identifier );67 [handler=Controller] void getResourceContent(in long callId, in unsigned long identifier, out String content); 66 68 [handler=Controller] void reloadPage(); 67 69 -
trunk/WebCore/inspector/InspectorController.cpp
r64540 r64547 596 596 return; 597 597 m_frontend.clear(); 598 m_remoteFrontend.clear(); 598 599 599 600 connectedFrontendCount--; … … 662 663 ResourcesMap::iterator resourcesEnd = m_resources.end(); 663 664 for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it) 664 it->second->updateScriptObject(m_ frontend.get());665 it->second->updateScriptObject(m_remoteFrontend.get()); 665 666 666 667 m_domAgent->setDocument(m_inspectedPage->mainFrame()->document()); … … 734 735 if (!loaderToKeep || !resource->isSameLoader(loaderToKeep)) { 735 736 removeResource(resource); 736 if (m_ frontend)737 resource->releaseScriptObject(m_ frontend.get());737 if (m_remoteFrontend) 738 resource->releaseScriptObject(m_remoteFrontend.get()); 738 739 } 739 740 } … … 796 797 // needed to keep the load for a user-entered URL from showing up in the 797 798 // list of resources for the page they are navigating away from. 798 m_mainResource->updateScriptObject(m_ frontend.get());799 m_mainResource->updateScriptObject(m_remoteFrontend.get()); 799 800 } else { 800 801 // Pages loaded from the page cache are committed before … … 907 908 addResource(resource.get()); 908 909 909 if (m_ frontend)910 resource->updateScriptObject(m_ frontend.get());910 if (m_remoteFrontend) 911 resource->updateScriptObject(m_remoteFrontend.get()); 911 912 } 912 913 … … 931 932 addResource(resource.get()); 932 933 933 if (m_ frontend && loader->frameLoader()->isLoadingFromCachedPage() && resource == m_mainResource)934 resource->updateScriptObject(m_ frontend.get());934 if (m_remoteFrontend && loader->frameLoader()->isLoadingFromCachedPage() && resource == m_mainResource) 935 resource->updateScriptObject(m_remoteFrontend.get()); 935 936 } 936 937 … … 944 945 if (m_timelineAgent) 945 946 m_timelineAgent->didMarkDOMContentEvent(); 946 if (m_ frontend)947 m_mainResource->updateScriptObject(m_ frontend.get());947 if (m_remoteFrontend) 948 m_mainResource->updateScriptObject(m_remoteFrontend.get()); 948 949 } 949 950 } … … 958 959 if (m_timelineAgent) 959 960 m_timelineAgent->didMarkLoadEvent(); 960 if (m_ frontend)961 m_mainResource->updateScriptObject(m_ frontend.get());961 if (m_remoteFrontend) 962 m_mainResource->updateScriptObject(m_remoteFrontend.get()); 962 963 } 963 964 } … … 1006 1007 resource->updateRequest(request); 1007 1008 1008 if (resource != m_mainResource && m_ frontend)1009 resource->updateScriptObject(m_ frontend.get());1009 if (resource != m_mainResource && m_remoteFrontend) 1010 resource->updateScriptObject(m_remoteFrontend.get()); 1010 1011 } 1011 1012 … … 1018 1019 resource->updateResponse(response); 1019 1020 1020 if (resource != m_mainResource && m_ frontend)1021 resource->updateScriptObject(m_ frontend.get());1021 if (resource != m_mainResource && m_remoteFrontend) 1022 resource->updateScriptObject(m_remoteFrontend.get()); 1022 1023 } 1023 1024 if (response.httpStatusCode() >= 400) { … … 1040 1041 resource->addLength(lengthReceived); 1041 1042 1042 if (resource != m_mainResource && m_ frontend)1043 resource->updateScriptObject(m_ frontend.get());1043 if (resource != m_mainResource && m_remoteFrontend) 1044 resource->updateScriptObject(m_remoteFrontend.get()); 1044 1045 } 1045 1046 … … 1059 1060 1060 1061 // No need to mute this event for main resource since it happens after did commit load. 1061 if (m_ frontend)1062 resource->updateScriptObject(m_ frontend.get());1062 if (m_remoteFrontend) 1063 resource->updateScriptObject(m_remoteFrontend.get()); 1063 1064 } 1064 1065 … … 1084 1085 1085 1086 // No need to mute this event for main resource since it happens after did commit load. 1086 if (m_ frontend)1087 resource->updateScriptObject(m_ frontend.get());1087 if (m_remoteFrontend) 1088 resource->updateScriptObject(m_remoteFrontend.get()); 1088 1089 } 1089 1090 … … 1105 1106 resource->setOverrideContent(sourceString, InspectorResource::XHR); 1106 1107 1107 if (m_ frontend)1108 resource->updateScriptObject(m_ frontend.get());1108 if (m_remoteFrontend) 1109 resource->updateScriptObject(m_remoteFrontend.get()); 1109 1110 } 1110 1111 … … 1120 1121 resource->setOverrideContent(ScriptString(sourceString), InspectorResource::Script); 1121 1122 1122 if (m_ frontend)1123 resource->updateScriptObject(m_ frontend.get());1123 if (m_remoteFrontend) 1124 resource->updateScriptObject(m_remoteFrontend.get()); 1124 1125 } 1125 1126 … … 2183 2184 void InspectorController::getResourceContent(long callId, unsigned long identifier) 2184 2185 { 2185 if (!m_ frontend)2186 if (!m_remoteFrontend) 2186 2187 return; 2187 2188 2188 2189 RefPtr<InspectorResource> resource = m_resources.get(identifier); 2189 if (resource) 2190 m_frontend->didGetResourceContent(callId, resource->sourceString()); 2191 else 2192 m_frontend->didGetResourceContent(callId, ""); 2190 String content = resource ? resource->sourceString() : String(); 2191 m_remoteFrontend->didGetResourceContent(callId, content); 2193 2192 } 2194 2193 -
trunk/WebCore/inspector/InspectorFrontend.cpp
r64540 r64547 104 104 } 105 105 106 void InspectorFrontend::updateConsoleMessageExpiredCount(unsigned count)107 {108 ScriptFunctionCall function(m_webInspector, "dispatch");109 function.appendArgument("updateConsoleMessageExpiredCount");110 function.appendArgument(count);111 function.call();112 }113 114 void InspectorFrontend::addConsoleMessage(const ScriptObject& messageObj)115 {116 ScriptFunctionCall function(m_webInspector, "dispatch");117 function.appendArgument("addConsoleMessage");118 function.appendArgument(messageObj);119 function.call();120 }121 122 void InspectorFrontend::updateConsoleMessageRepeatCount(unsigned count)123 {124 ScriptFunctionCall function(m_webInspector, "dispatch");125 function.appendArgument("updateConsoleMessageRepeatCount");126 function.appendArgument(count);127 function.call();128 }129 130 void InspectorFrontend::clearConsoleMessages()131 {132 callSimpleFunction("clearConsoleMessages");133 }134 135 bool InspectorFrontend::updateResource(unsigned long identifier, const ScriptObject& resourceObj)136 {137 ScriptFunctionCall function(m_webInspector, "dispatch");138 function.appendArgument("updateResource");139 function.appendArgument(identifier);140 function.appendArgument(resourceObj);141 bool hadException = false;142 function.call(hadException);143 return !hadException;144 }145 146 void InspectorFrontend::removeResource(unsigned long identifier)147 {148 ScriptFunctionCall function(m_webInspector, "dispatch");149 function.appendArgument("removeResource");150 function.appendArgument(identifier);151 function.call();152 }153 154 void InspectorFrontend::didGetResourceContent(long callId, const String& content)155 {156 ScriptFunctionCall function(m_webInspector, "dispatch");157 function.appendArgument("didGetResourceContent");158 function.appendArgument(callId);159 function.appendArgument(content);160 function.call();161 }162 163 106 void InspectorFrontend::updateFocusedNode(long nodeId) 164 107 { -
trunk/WebCore/inspector/InspectorFrontend.h
r64540 r64547 67 67 void populateApplicationSettings(const String& settings); 68 68 void populateSessionSettings(const String& settings); 69 70 void updateConsoleMessageExpiredCount(unsigned count);71 void addConsoleMessage(const ScriptObject& messageObj);72 void updateConsoleMessageRepeatCount(unsigned count);73 void clearConsoleMessages();74 75 bool updateResource(unsigned long identifier, const ScriptObject& resourceObj);76 void removeResource(unsigned long identifier);77 void didGetResourceContent(long callId, const String& content);78 69 79 70 void updateFocusedNode(long nodeId); -
trunk/WebCore/inspector/InspectorResource.cpp
r64203 r64547 39 39 #include "DocumentLoader.h" 40 40 #include "Frame.h" 41 #include "InspectorFrontend.h" 41 #include "InspectorValues.h" 42 #include "RemoteInspectorFrontend.h" 42 43 #include "ResourceLoadTiming.h" 43 44 #include "ResourceRequest.h" 44 45 #include "ResourceResponse.h" 45 46 #include "TextEncoding.h" 46 #include "ScriptObject.h"47 47 48 48 namespace WebCore { … … 147 147 } 148 148 149 static void populateHeadersObject(ScriptObject* object, const HTTPHeaderMap& headers) 150 { 149 static PassRefPtr<InspectorObject> buildHeadersObject(const HTTPHeaderMap& headers) 150 { 151 RefPtr<InspectorObject> object = InspectorObject::create(); 151 152 HTTPHeaderMap::const_iterator end = headers.end(); 152 153 for (HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it) { 153 object->set(it->first.string(), it->second); 154 } 155 } 156 157 void InspectorResource::updateScriptObject(InspectorFrontend* frontend) 154 object->setString(it->first.string(), it->second); 155 } 156 return object; 157 } 158 159 static PassRefPtr<InspectorObject> buildObjectForTiming(ResourceLoadTiming* timing) 160 { 161 RefPtr<InspectorObject> jsonObject = InspectorObject::create(); 162 jsonObject->setNumber("requestTime", timing->requestTime); 163 jsonObject->setNumber("proxyStart", timing->proxyStart); 164 jsonObject->setNumber("proxyEnd", timing->proxyEnd); 165 jsonObject->setNumber("dnsStart", timing->dnsStart); 166 jsonObject->setNumber("dnsEnd", timing->dnsEnd); 167 jsonObject->setNumber("connectStart", timing->connectStart); 168 jsonObject->setNumber("connectEnd", timing->connectEnd); 169 jsonObject->setNumber("sslStart", timing->sslStart); 170 jsonObject->setNumber("sslEnd", timing->sslEnd); 171 jsonObject->setNumber("sendStart", timing->sendStart); 172 jsonObject->setNumber("sendEnd", timing->sendEnd); 173 jsonObject->setNumber("receiveHeadersEnd", timing->receiveHeadersEnd); 174 return jsonObject; 175 } 176 177 178 void InspectorResource::updateScriptObject(RemoteInspectorFrontend* frontend) 158 179 { 159 180 if (m_changes.hasChange(NoChange)) 160 181 return; 161 182 162 ScriptObject jsonObject = frontend->newScriptObject(); 183 RefPtr<InspectorObject> jsonObject = InspectorObject::create(); 184 jsonObject->setNumber("id", m_identifier); 163 185 if (m_changes.hasChange(RequestChange)) { 164 jsonObject.set("url", m_requestURL.string()); 165 jsonObject.set("documentURL", m_frame->document()->url().string()); 166 jsonObject.set("host", m_requestURL.host()); 167 jsonObject.set("path", m_requestURL.path()); 168 jsonObject.set("lastPathComponent", m_requestURL.lastPathComponent()); 169 ScriptObject requestHeaders = frontend->newScriptObject(); 170 populateHeadersObject(&requestHeaders, m_requestHeaderFields); 171 jsonObject.set("requestHeaders", requestHeaders); 172 jsonObject.set("mainResource", m_isMainResource); 173 jsonObject.set("requestMethod", m_requestMethod); 174 jsonObject.set("requestFormData", m_requestFormData); 175 jsonObject.set("didRequestChange", true); 186 jsonObject->setString("url", m_requestURL.string()); 187 jsonObject->setString("documentURL", m_frame->document()->url().string()); 188 jsonObject->setString("host", m_requestURL.host()); 189 jsonObject->setString("path", m_requestURL.path()); 190 jsonObject->setString("lastPathComponent", m_requestURL.lastPathComponent()); 191 RefPtr<InspectorObject> requestHeaders = buildHeadersObject(m_requestHeaderFields); 192 jsonObject->set("requestHeaders", requestHeaders); 193 jsonObject->setBool("mainResource", m_isMainResource); 194 jsonObject->setString("requestMethod", m_requestMethod); 195 jsonObject->setString("requestFormData", m_requestFormData); 196 jsonObject->setBool("didRequestChange", true); 176 197 } 177 198 178 199 if (m_changes.hasChange(ResponseChange)) { 179 jsonObject.set("mimeType", m_mimeType); 180 jsonObject.set("suggestedFilename", m_suggestedFilename); 181 jsonObject.set("expectedContentLength", m_expectedContentLength); 182 jsonObject.set("statusCode", m_responseStatusCode); 183 jsonObject.set("statusText", m_responseStatusText); 184 ScriptObject responseHeaders = frontend->newScriptObject(); 185 populateHeadersObject(&responseHeaders, m_responseHeaderFields); 186 jsonObject.set("responseHeaders", responseHeaders); 187 jsonObject.set("connectionID", m_connectionID); 188 jsonObject.set("connectionReused", m_connectionReused); 189 jsonObject.set("cached", m_cached); 200 jsonObject->setString("mimeType", m_mimeType); 201 jsonObject->setString("suggestedFilename", m_suggestedFilename); 202 jsonObject->setNumber("expectedContentLength", m_expectedContentLength); 203 jsonObject->setNumber("statusCode", m_responseStatusCode); 204 jsonObject->setString("statusText", m_responseStatusText); 205 RefPtr<InspectorObject> responseHeaders = buildHeadersObject(m_responseHeaderFields); 206 jsonObject->set("responseHeaders", responseHeaders); 207 jsonObject->setNumber("connectionID", m_connectionID); 208 jsonObject->setBool("connectionReused", m_connectionReused); 209 jsonObject->setBool("cached", m_cached); 190 210 if (m_loadTiming && !m_cached) 191 jsonObject .set("timing", buildObjectForTiming(frontend,m_loadTiming.get()));192 jsonObject .set("didResponseChange", true);211 jsonObject->set("timing", buildObjectForTiming(m_loadTiming.get())); 212 jsonObject->setBool("didResponseChange", true); 193 213 } 194 214 195 215 if (m_changes.hasChange(TypeChange)) { 196 jsonObject .set("type", static_cast<int>(type()));197 jsonObject .set("didTypeChange", true);216 jsonObject->setNumber("type", static_cast<int>(type())); 217 jsonObject->setBool("didTypeChange", true); 198 218 } 199 219 200 220 if (m_changes.hasChange(LengthChange)) { 201 jsonObject .set("resourceSize", m_length);202 jsonObject .set("didLengthChange", true);221 jsonObject->setNumber("resourceSize", m_length); 222 jsonObject->setBool("didLengthChange", true); 203 223 } 204 224 205 225 if (m_changes.hasChange(CompletionChange)) { 206 jsonObject .set("failed", m_failed);207 jsonObject .set("finished", m_finished);208 jsonObject .set("didCompletionChange", true);226 jsonObject->setBool("failed", m_failed); 227 jsonObject->setBool("finished", m_finished); 228 jsonObject->setBool("didCompletionChange", true); 209 229 } 210 230 211 231 if (m_changes.hasChange(TimingChange)) { 212 232 if (m_startTime > 0) 213 jsonObject .set("startTime", m_startTime);233 jsonObject->setNumber("startTime", m_startTime); 214 234 if (m_responseReceivedTime > 0) 215 jsonObject .set("responseReceivedTime", m_responseReceivedTime);235 jsonObject->setNumber("responseReceivedTime", m_responseReceivedTime); 216 236 if (m_endTime > 0) 217 jsonObject .set("endTime", m_endTime);237 jsonObject->setNumber("endTime", m_endTime); 218 238 if (m_loadEventTime > 0) 219 jsonObject .set("loadEventTime", m_loadEventTime);239 jsonObject->setNumber("loadEventTime", m_loadEventTime); 220 240 if (m_domContentEventTime > 0) 221 jsonObject .set("domContentEventTime", m_domContentEventTime);222 jsonObject .set("didTimingChange", true);241 jsonObject->setNumber("domContentEventTime", m_domContentEventTime); 242 jsonObject->setBool("didTimingChange", true); 223 243 } 224 244 … … 228 248 } 229 249 230 if (frontend->updateResource(m_identifier, jsonObject))231 232 } 233 234 void InspectorResource::releaseScriptObject( InspectorFrontend* frontend)250 frontend->updateResource(jsonObject); 251 m_changes.clearAll(); 252 } 253 254 void InspectorResource::releaseScriptObject(RemoteInspectorFrontend* frontend) 235 255 { 236 256 m_changes.setAll(); … … 391 411 } 392 412 393 ScriptObject InspectorResource::buildObjectForTiming(InspectorFrontend* frontend, ResourceLoadTiming* timing)394 {395 ScriptObject jsonObject = frontend->newScriptObject();396 jsonObject.set("requestTime", timing->requestTime);397 jsonObject.set("proxyStart", timing->proxyStart);398 jsonObject.set("proxyEnd", timing->proxyEnd);399 jsonObject.set("dnsStart", timing->dnsStart);400 jsonObject.set("dnsEnd", timing->dnsEnd);401 jsonObject.set("connectStart", timing->connectStart);402 jsonObject.set("connectEnd", timing->connectEnd);403 jsonObject.set("sslStart", timing->sslStart);404 jsonObject.set("sslEnd", timing->sslEnd);405 jsonObject.set("sendStart", timing->sendStart);406 jsonObject.set("sendEnd", timing->sendEnd);407 jsonObject.set("receiveHeadersEnd", timing->receiveHeadersEnd);408 return jsonObject;409 }410 411 413 } // namespace WebCore 412 414 -
trunk/WebCore/inspector/InspectorResource.h
r64142 r64547 34 34 #include "HTTPHeaderMap.h" 35 35 #include "KURL.h" 36 #include "ScriptObject.h"37 #include "ScriptState.h"38 36 #include "ScriptString.h" 39 37 … … 48 46 class CachedResource; 49 47 class DocumentLoader; 50 class InspectorFrontend;51 48 class Frame; 49 class RemoteInspectorFrontend; 52 50 class ResourceLoadTiming; 53 51 class ResourceRequest; … … 79 77 80 78 PassRefPtr<InspectorResource> appendRedirect(unsigned long identifier, const KURL& redirectURL); 81 void updateScriptObject( InspectorFrontend* frontend);82 void releaseScriptObject( InspectorFrontend* frontend);79 void updateScriptObject(RemoteInspectorFrontend* frontend); 80 void releaseScriptObject(RemoteInspectorFrontend* frontend); 83 81 84 82 void updateRequest(const ResourceRequest&); … … 152 150 CachedResource* cachedResource() const; 153 151 154 ScriptObject buildObjectForTiming(InspectorFrontend*, ResourceLoadTiming*);155 156 152 unsigned long m_identifier; 157 153 RefPtr<DocumentLoader> m_loader; -
trunk/WebCore/inspector/front-end/inspector.js
r64458 r64547 1145 1145 } 1146 1146 1147 WebInspector.updateResource = function(identifier, payload) 1148 { 1147 WebInspector.updateResource = function(payload) 1148 { 1149 var identifier = payload.id; 1149 1150 var resource = this.resources[identifier]; 1150 1151 if (!resource) {
Note: See TracChangeset
for help on using the changeset viewer.