Changeset 62535 in webkit
- Timestamp:
- Jul 6, 2010 12:54:15 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r62533 r62535 1 2010-07-06 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r62529. 4 http://trac.webkit.org/changeset/62529 5 https://bugs.webkit.org/show_bug.cgi?id=41661 6 7 http/tests/inspector/resource-har-conversion.html is broken 8 (Requested by yutak on #webkit). 9 10 * inspector/InspectorController.cpp: 11 (WebCore::InspectorController::addResource): 12 (WebCore::InspectorController::removeResource): 13 * inspector/InspectorController.h: 14 * inspector/InspectorResource.cpp: 15 (WebCore::InspectorResource::InspectorResource): 16 (WebCore::InspectorResource::updateScriptObject): 17 (WebCore::InspectorResource::cachedResource): 18 (WebCore::InspectorResource::type): 19 (WebCore::InspectorResource::resourceData): 20 * inspector/InspectorResource.h: 21 (WebCore::InspectorResource::): 22 (WebCore::InspectorResource::create): 23 * inspector/front-end/Resource.js: 24 (WebInspector.Resource.Type.toString): 25 (WebInspector.Resource.prototype.set type): 26 (WebInspector.Resource.prototype._mimeTypeIsConsistentWithType): 27 * inspector/front-end/ResourceView.js: 28 (WebInspector.ResourceView.prototype._refreshRequestHeaders): 29 (WebInspector.ResourceView.prototype._refreshResponseHeaders): 30 (WebInspector.ResourceView.prototype._refreshHeaders): 31 * inspector/front-end/inspector.css: 32 (.resources-category-scripts, .resources-category-xhr, .resources-category-fonts, .resources-category-other): 33 * inspector/front-end/inspector.js: 34 (WebInspector.loaded): 35 (WebInspector.updateResource): 36 * websockets/WebSocketChannel.cpp: 37 (WebCore::WebSocketChannel::WebSocketChannel): 38 (WebCore::WebSocketChannel::disconnect): 39 (WebCore::WebSocketChannel::didOpen): 40 (WebCore::WebSocketChannel::didClose): 41 (WebCore::WebSocketChannel::processBuffer): 42 * websockets/WebSocketChannel.h: 43 1 44 2010-07-06 Adam Barth <abarth@webkit.org> 2 45 -
trunk/WebCore/inspector/InspectorController.cpp
r62529 r62535 806 806 807 807 Frame* frame = resource->frame(); 808 if (!frame)809 return;810 808 ResourcesMap* resourceMap = m_frameResources.get(frame); 811 809 if (resourceMap) … … 826 824 827 825 Frame* frame = resource->frame(); 828 if (!frame)829 return;830 826 ResourcesMap* resourceMap = m_frameResources.get(frame); 831 827 if (!resourceMap) { … … 1470 1466 } 1471 1467 #endif 1472 1473 #if ENABLE(WEB_SOCKETS)1474 void InspectorController::didCreateWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL)1475 {1476 if (!enabled())1477 return;1478 ASSERT(m_inspectedPage);1479 1480 RefPtr<InspectorResource> resource = InspectorResource::createWebSocket(identifier, requestURL, documentURL);1481 addResource(resource.get());1482 1483 if (m_frontend)1484 resource->updateScriptObject(m_frontend.get());1485 }1486 1487 void InspectorController::willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest& request)1488 {1489 RefPtr<InspectorResource> resource = getTrackedResource(identifier);1490 if (!resource)1491 return;1492 resource->startTiming();1493 resource->updateWebSocketRequest(request);1494 if (m_frontend)1495 resource->updateScriptObject(m_frontend.get());1496 }1497 1498 void InspectorController::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse& response)1499 {1500 RefPtr<InspectorResource> resource = getTrackedResource(identifier);1501 if (!resource)1502 return;1503 // Calling resource->markResponseReceivedTime() here makes resources bar chart confusing, because1504 // we cannot apply the "latency + download" model of regular resources to WebSocket connections.1505 // FIXME: Design a new UI for bar charts of WebSocket resources, and record timing here.1506 resource->updateWebSocketResponse(response);1507 if (m_frontend)1508 resource->updateScriptObject(m_frontend.get());1509 }1510 1511 void InspectorController::didCloseWebSocket(unsigned long identifier)1512 {1513 RefPtr<InspectorResource> resource = getTrackedResource(identifier);1514 if (!resource)1515 return;1516 1517 resource->endTiming();1518 if (m_frontend)1519 resource->updateScriptObject(m_frontend.get());1520 }1521 #endif // ENABLE(WEB_SOCKETS)1522 1468 1523 1469 #if ENABLE(JAVASCRIPT_DEBUGGER) -
trunk/WebCore/inspector/InspectorController.h
r62529 r62535 91 91 #endif 92 92 93 #if ENABLE(WEB_SOCKETS)94 class WebSocketHandshakeRequest;95 class WebSocketHandshakeResponse;96 #endif97 98 93 class InspectorController 99 94 #if ENABLE(JAVASCRIPT_DEBUGGER) … … 221 216 void removeDOMStorageItem(long callId, long storageId, const String& key); 222 217 #endif 223 #if ENABLE(WEB_SOCKETS)224 void didCreateWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL);225 void willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest&);226 void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse&);227 void didCloseWebSocket(unsigned long identifier);228 #endif229 218 230 219 const ResourcesMap& resources() const { return m_resources; } -
trunk/WebCore/inspector/InspectorResource.cpp
r62529 r62535 42 42 #include "ResourceRequest.h" 43 43 #include "ResourceResponse.h" 44 #include "StringBuffer.h"45 44 #include "TextEncoding.h" 46 45 #include "ScriptObject.h" 47 #include "WebSocketHandshakeRequest.h"48 #include "WebSocketHandshakeResponse.h"49 50 #include <wtf/Assertions.h>51 46 52 47 namespace WebCore { 53 48 54 // Create human-readable binary representation, like "01:23:45:67:89:AB:CD:EF". 55 static String createReadableStringFromBinary(const unsigned char* value, size_t length) 56 { 57 ASSERT(length > 0); 58 static const char hexDigits[17] = "0123456789ABCDEF"; 59 size_t bufferSize = length * 3 - 1; 60 StringBuffer buffer(bufferSize); 61 size_t index = 0; 62 for (size_t i = 0; i < length; ++i) { 63 if (i > 0) 64 buffer[index++] = ':'; 65 buffer[index++] = hexDigits[value[i] >> 4]; 66 buffer[index++] = hexDigits[value[i] & 0xF]; 67 } 68 ASSERT(index == bufferSize); 69 return String::adopt(buffer); 70 } 71 72 InspectorResource::InspectorResource(unsigned long identifier, DocumentLoader* loader, const KURL& requestURL, const KURL& documentURL) 49 InspectorResource::InspectorResource(unsigned long identifier, DocumentLoader* loader, const KURL& requestURL) 73 50 : m_identifier(identifier) 74 51 , m_loader(loader) 75 , m_frame(loader ? loader->frame() : 0)52 , m_frame(loader->frame()) 76 53 , m_requestURL(requestURL) 77 , m_documentURL(documentURL)78 54 , m_expectedContentLength(0) 79 55 , m_cached(false) … … 88 64 , m_domContentEventTime(-1.0) 89 65 , m_isMainResource(false) 90 #if ENABLE(WEB_SOCKETS)91 , m_isWebSocket(false)92 #endif93 66 { 94 67 } … … 113 86 } 114 87 115 PassRefPtr<InspectorResource> InspectorResource::create(unsigned long identifier, DocumentLoader* loader, const KURL& requestURL)116 {117 ASSERT(loader);118 return adoptRef(new InspectorResource(identifier, loader, requestURL, loader->frame()->document()->url()));119 }120 121 88 PassRefPtr<InspectorResource> InspectorResource::createCached(unsigned long identifier, DocumentLoader* loader, const CachedResource* cachedResource) 122 89 { … … 137 104 return resource; 138 105 } 139 140 #if ENABLE(WEB_SOCKETS)141 PassRefPtr<InspectorResource> InspectorResource::createWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL)142 {143 RefPtr<InspectorResource> resource(new InspectorResource(identifier, 0, requestURL, documentURL));144 resource->markWebSocket();145 return resource.release();146 }147 #endif148 106 149 107 void InspectorResource::updateRequest(const ResourceRequest& request) … … 175 133 } 176 134 177 #if ENABLE(WEB_SOCKETS)178 void InspectorResource::updateWebSocketRequest(const WebSocketHandshakeRequest& request)179 {180 m_requestHeaderFields = request.headerFields();181 m_requestMethod = "GET"; // Currently we always use "GET" to request handshake.182 m_webSocketRequestKey3.set(new WebSocketHandshakeRequest::Key3(request.key3()));183 m_changes.set(RequestChange);184 m_changes.set(TypeChange);185 }186 187 void InspectorResource::updateWebSocketResponse(const WebSocketHandshakeResponse& response)188 {189 m_responseStatusCode = response.statusCode();190 m_responseStatusText = response.statusText();191 m_responseHeaderFields = response.headerFields();192 m_webSocketChallengeResponse.set(new WebSocketHandshakeResponse::ChallengeResponse(response.challengeResponse()));193 m_changes.set(ResponseChange);194 m_changes.set(TypeChange);195 }196 #endif // ENABLE(WEB_SOCKETS)197 198 135 static void populateHeadersObject(ScriptObject* object, const HTTPHeaderMap& headers) 199 136 { … … 213 150 if (m_changes.hasChange(RequestChange)) { 214 151 jsonObject.set("url", m_requestURL.string()); 215 jsonObject.set("documentURL", m_ documentURL.string());152 jsonObject.set("documentURL", m_frame->document()->url().string()); 216 153 jsonObject.set("host", m_requestURL.host()); 217 154 jsonObject.set("path", m_requestURL.path()); … … 225 162 jsonObject.set("didRequestChange", true); 226 163 jsonObject.set("cached", m_cached); 227 #if ENABLE(WEB_SOCKETS)228 if (m_webSocketRequestKey3)229 jsonObject.set("webSocketRequestKey3", createReadableStringFromBinary(m_webSocketRequestKey3->value, sizeof(m_webSocketRequestKey3->value)));230 #endif231 164 } 232 165 … … 240 173 populateHeadersObject(&responseHeaders, m_responseHeaderFields); 241 174 jsonObject.set("responseHeaders", responseHeaders); 242 #if ENABLE(WEB_SOCKETS)243 if (m_webSocketChallengeResponse)244 jsonObject.set("webSocketChallengeResponse", createReadableStringFromBinary(m_webSocketChallengeResponse->value, sizeof(m_webSocketChallengeResponse->value)));245 #endif246 175 jsonObject.set("didResponseChange", true); 247 176 } … … 302 231 // but Inspector will already try to fetch data that is only available via CachedResource (and it won't update once the resource is added, 303 232 // because m_changes will not have the appropriate bits set). 304 if (!m_frame)305 return 0;306 233 const String& url = m_requestURL.string(); 307 234 CachedResource* cachedResource = m_frame->document()->docLoader()->cachedResource(url); … … 340 267 return m_overrideContentType; 341 268 342 #if ENABLE(WEB_SOCKETS)343 if (m_isWebSocket)344 return WebSocket;345 #endif346 347 ASSERT(m_loader);348 269 if (m_requestURL == m_loader->requestURL()) { 349 270 InspectorResource::Type resourceType = cachedResourceType(); … … 385 306 PassRefPtr<SharedBuffer> InspectorResource::resourceData(String* textEncodingName) const 386 307 { 387 if (m_ loader && m_requestURL == m_loader->requestURL()) {308 if (m_requestURL == m_loader->requestURL()) { 388 309 *textEncodingName = m_frame->document()->inputEncoding(); 389 310 return m_loader->mainResourceData(); -
trunk/WebCore/inspector/InspectorResource.h
r62529 r62535 37 37 #include "ScriptState.h" 38 38 #include "ScriptString.h" 39 #include "WebSocketHandshakeRequest.h"40 #include "WebSocketHandshakeResponse.h"41 39 42 40 #include <wtf/CurrentTime.h> … … 53 51 class Frame; 54 52 class ResourceResponse; 53 55 54 class ResourceRequest; 56 57 #if ENABLE(WEB_SOCKETS)58 class WebSocketHandshakeRequest;59 class WebSocketHandshakeResponse;60 #endif61 55 62 56 class InspectorResource : public RefCounted<InspectorResource> { … … 72 66 XHR, 73 67 Media, 74 WebSocket,75 68 Other 76 69 }; 77 70 78 static PassRefPtr<InspectorResource> create(unsigned long identifier, DocumentLoader* loader, const KURL& requestURL); 71 static PassRefPtr<InspectorResource> create(unsigned long identifier, DocumentLoader* loader, const KURL& requestURL) 72 { 73 return adoptRef(new InspectorResource(identifier, loader, requestURL)); 74 } 79 75 80 76 static PassRefPtr<InspectorResource> createCached(unsigned long identifier, DocumentLoader*, const CachedResource*); 81 82 #if ENABLE(WEB_SOCKETS)83 // WebSocket resource doesn't have its loader. For WebSocket resources, m_loader and m_frame will become null.84 static PassRefPtr<InspectorResource> createWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL);85 #endif86 77 87 78 ~InspectorResource(); … … 93 84 void updateRequest(const ResourceRequest&); 94 85 void updateResponse(const ResourceResponse&); 95 96 #if ENABLE(WEB_SOCKETS)97 void updateWebSocketRequest(const WebSocketHandshakeRequest&);98 void updateWebSocketResponse(const WebSocketHandshakeResponse&);99 #endif100 86 101 87 void setOverrideContent(const ScriptString& data, Type); … … 161 147 }; 162 148 163 InspectorResource(unsigned long identifier, DocumentLoader*, const KURL& requestURL , const KURL& documentURL);149 InspectorResource(unsigned long identifier, DocumentLoader*, const KURL& requestURL); 164 150 Type type() const; 165 151 … … 167 153 CachedResource* cachedResource() const; 168 154 169 #if ENABLE(WEB_SOCKETS)170 void markWebSocket() { m_isWebSocket = true; }171 #endif172 173 155 unsigned long m_identifier; 174 156 RefPtr<DocumentLoader> m_loader; 175 157 RefPtr<Frame> m_frame; 176 158 KURL m_requestURL; 177 KURL m_documentURL;178 159 HTTPHeaderMap m_requestHeaderFields; 179 160 HTTPHeaderMap m_responseHeaderFields; … … 199 180 String m_requestFormData; 200 181 Vector<RefPtr<InspectorResource> > m_redirects; 201 202 #if ENABLE(WEB_SOCKETS)203 bool m_isWebSocket;204 205 // The following fields are not used for resources other than WebSocket.206 // We allocate them dynamically to reduce memory consumption for regular resources.207 OwnPtr<WebSocketHandshakeRequest::Key3> m_webSocketRequestKey3;208 OwnPtr<WebSocketHandshakeResponse::ChallengeResponse> m_webSocketChallengeResponse;209 #endif210 182 }; 211 183 -
trunk/WebCore/inspector/front-end/Resource.js
r62529 r62535 46 46 XHR: 5, 47 47 Media: 6, 48 WebSocket: 7, 49 Other: 8, 48 Other: 7, 50 49 51 50 isTextType: function(type) … … 69 68 case this.XHR: 70 69 return WebInspector.UIString("XHR"); 71 case this.WebSocket:72 return WebInspector.UIString("WebSocket");73 70 case this.Other: 74 71 default: … … 356 353 this.category = WebInspector.resourceCategories.xhr; 357 354 break; 358 case WebInspector.Resource.Type.WebSocket:359 this.category = WebInspector.resourceCategories.websocket;360 break;361 355 case WebInspector.Resource.Type.Other: 362 356 default: … … 571 565 if (typeof this.type === "undefined" 572 566 || this.type === WebInspector.Resource.Type.Other 573 || this.type === WebInspector.Resource.Type.XHR 574 || this.type === WebInspector.Resource.Type.WebSocket) 567 || this.type === WebInspector.Resource.Type.XHR) 575 568 return true; 576 569 -
trunk/WebCore/inspector/front-end/ResourceView.js
r62529 r62535 279 279 _refreshRequestHeaders: function() 280 280 { 281 var additionalRow = null; 282 if (typeof this.resource.webSocketRequestKey3 !== "undefined") 283 additionalRow = {header: "(Key3)", value: this.resource.webSocketRequestKey3}; 284 this._refreshHeaders(WebInspector.UIString("Request Headers"), this.resource.sortedRequestHeaders, additionalRow, this.requestHeadersTreeElement); 281 this._refreshHeaders(WebInspector.UIString("Request Headers"), this.resource.sortedRequestHeaders, this.requestHeadersTreeElement); 285 282 this._refreshFormData(); 286 283 }, … … 288 285 _refreshResponseHeaders: function() 289 286 { 290 var additionalRow = null; 291 if (typeof this.resource.webSocketChallengeResponse !== "undefined") 292 additionalRow = {header: "(Challenge Response)", value: this.resource.webSocketChallengeResponse}; 293 this._refreshHeaders(WebInspector.UIString("Response Headers"), this.resource.sortedResponseHeaders, additionalRow, this.responseHeadersTreeElement); 287 this._refreshHeaders(WebInspector.UIString("Response Headers"), this.resource.sortedResponseHeaders, this.responseHeadersTreeElement); 294 288 }, 295 289 … … 322 316 }, 323 317 324 _refreshHeaders: function(title, headers, additionalRow,headersTreeElement)318 _refreshHeaders: function(title, headers, headersTreeElement) 325 319 { 326 320 headersTreeElement.removeChildren(); … … 339 333 headersTreeElement.appendChild(headerTreeElement); 340 334 } 341 342 if (additionalRow) {343 var title = "<div class=\"header-name\">" + additionalRow.header.escapeHTML() + ":</div>";344 title += "<div class=\"header-value source-code\">" + additionalRow.value.escapeHTML() + "</div>"345 346 var headerTreeElement = new TreeElement(title, null, false);347 headerTreeElement.selectable = false;348 headersTreeElement.appendChild(headerTreeElement);349 }350 335 } 351 336 } -
trunk/WebCore/inspector/front-end/inspector.css
r62529 r62535 2804 2804 2805 2805 .resources-category-documents, .resources-category-stylesheets, .resources-category-images, 2806 .resources-category-scripts, .resources-category-xhr, .resources-category-fonts, 2807 .resources-category-websockets, .resources-category-other { 2806 .resources-category-scripts, .resources-category-xhr, .resources-category-fonts, .resources-category-other { 2808 2807 display: none; 2809 2808 } … … 2815 2814 .filter-all .resources-category-xhr, .filter-xhr .resources-category-xhr, 2816 2815 .filter-all .resources-category-fonts, .filter-fonts .resources-category-fonts, 2817 .filter-all .resources-category-websockets, .filter-websockets .resources-category-websockets,2818 2816 .filter-all .resources-category-other, .filter-other .resources-category-other, 2819 2817 .resource-sidebar-tree-item.selected { … … 2889 2887 .resources-category-xhr.resource-cached .resources-graph-bar { 2890 2888 -webkit-border-image: url(Images/timelineHollowPillYellow.png) 6 7 6 7; 2891 }2892 2893 /* FIXME: Create bar images for WebSocket. */2894 .resources-category-websockets .resources-graph-bar {2895 -webkit-border-image: url(Images/timelinePillGray.png) 6 7 6 7;2896 }2897 2898 .resources-category-websockets.resource-cached .resources-graph-bar {2899 -webkit-border-image: url(Images/timelineHollowPillGray.png) 6 7 6 7;2900 2889 } 2901 2890 -
trunk/WebCore/inspector/front-end/inspector.js
r62529 r62535 465 465 xhr: new WebInspector.ResourceCategory("xhr", WebInspector.UIString("XHR"), "rgb(231,231,10)"), 466 466 fonts: new WebInspector.ResourceCategory("fonts", WebInspector.UIString("Fonts"), "rgb(255,82,62)"), 467 websocket: new WebInspector.ResourceCategory("websockets", WebInspector.UIString("WebSocket"), "rgb(186,186,186)"), // FIXME: Decide the color.468 467 other: new WebInspector.ResourceCategory("other", WebInspector.UIString("Other"), "rgb(186,186,186)") 469 468 }; … … 1163 1162 resource.cached = payload.cached; 1164 1163 resource.documentURL = payload.documentURL; 1165 if (typeof payload.webSocketRequestKey3 !== "undefined")1166 resource.webSocketRequestKey3 = payload.webSocketRequestKey3;1167 1164 1168 1165 if (resource.mainResource) … … 1185 1182 resource.suggestedFilename = payload.suggestedFilename; 1186 1183 resource.responseHeaders = payload.responseHeaders; 1187 if (typeof payload.webSocketChallengeResponse !== "undefined")1188 resource.webSocketChallengeResponse = payload.webSocketChallengeResponse;1189 1184 } 1190 1185 -
trunk/WebCore/websockets/WebSocketChannel.cpp
r62529 r62535 37 37 #include "CookieJar.h" 38 38 #include "Document.h" 39 #include "InspectorController.h"40 39 #include "Logging.h" 41 #include "Page.h"42 40 #include "PlatformString.h" 43 #include "ProgressTracker.h"44 41 #include "ScriptExecutionContext.h" 45 42 #include "SocketStreamError.h" … … 66 63 , m_closed(false) 67 64 , m_unhandledBufferedAmount(0) 68 #if ENABLE(INSPECTOR) 69 , m_identifier(0) 70 #endif 71 { 72 #if ENABLE(INSPECTOR) 73 if (InspectorController* controller = m_context->inspectorController()) 74 controller->didCreateWebSocket(identifier(), url, m_context->url()); 75 #endif 65 { 76 66 } 77 67 … … 122 112 { 123 113 LOG(Network, "WebSocketChannel %p disconnect", this); 124 #if ENABLE(INSPECTOR)125 if (m_context)126 if (InspectorController* controller = m_context->inspectorController())127 controller->didCloseWebSocket(identifier());128 #endif129 114 m_handshake.clearScriptExecutionContext(); 130 115 m_client = 0; … … 152 137 if (!m_context) 153 138 return; 154 #if ENABLE(INSPECTOR)155 if (InspectorController* controller = m_context->inspectorController())156 controller->willSendWebSocketHandshakeRequest(identifier(), m_handshake.clientHandshakeRequest());157 #endif158 139 const CString& handshakeMessage = m_handshake.clientHandshakeMessage(); 159 140 if (!handle->send(handshakeMessage.data(), handshakeMessage.length())) { … … 166 147 { 167 148 LOG(Network, "WebSocketChannel %p didClose", this); 168 #if ENABLE(INSPECTOR)169 if (m_context)170 if (InspectorController* controller = m_context->inspectorController())171 controller->didCloseWebSocket(identifier());172 #endif173 149 ASSERT_UNUSED(handle, handle == m_handle || !m_handle); 174 150 m_closed = true; … … 262 238 return false; 263 239 if (m_handshake.mode() == WebSocketHandshake::Connected) { 264 #if ENABLE(INSPECTOR)265 if (InspectorController* controller = m_context->inspectorController())266 controller->didReceiveWebSocketHandshakeResponse(identifier(), m_handshake.serverHandshakeResponse());267 #endif268 240 if (!m_handshake.serverSetCookie().isEmpty()) { 269 241 if (m_context->isDocument()) { … … 357 329 } 358 330 359 #if ENABLE(INSPECTOR)360 unsigned long WebSocketChannel::identifier()361 {362 if (m_identifier)363 return m_identifier;364 365 if (InspectorController* controller = m_context->inspectorController())366 if (Page* page = controller->inspectedPage())367 m_identifier = page->progress()->createUniqueIdentifier();368 369 ASSERT(m_identifier);370 return m_identifier;371 }372 #endif // ENABLE(INSPECTOR)373 374 331 } // namespace WebCore 375 332 -
trunk/WebCore/websockets/WebSocketChannel.h
r62529 r62535 85 85 void resumeTimerFired(Timer<WebSocketChannel>* timer); 86 86 87 #if ENABLE(INSPECTOR)88 unsigned long identifier();89 #endif90 91 87 ScriptExecutionContext* m_context; 92 88 WebSocketChannelClient* m_client; … … 100 96 bool m_closed; 101 97 unsigned long m_unhandledBufferedAmount; 102 103 #if ENABLE(INSPECTOR)104 unsigned long m_identifier;105 #endif106 98 }; 107 99
Note: See TracChangeset
for help on using the changeset viewer.