OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 cachedResource = InspectorPageAgent::cachedResource(loader->frame(), res
ponse.url()); | 343 cachedResource = InspectorPageAgent::cachedResource(loader->frame(), res
ponse.url()); |
344 | 344 |
345 if (cachedResource) { | 345 if (cachedResource) { |
346 // Use mime type from cached resource in case the one in response is emp
ty. | 346 // Use mime type from cached resource in case the one in response is emp
ty. |
347 if (resourceResponse && response.mimeType().isEmpty()) | 347 if (resourceResponse && response.mimeType().isEmpty()) |
348 resourceResponse->setString(TypeBuilder::Network::Response::MimeType
, cachedResource->response().mimeType()); | 348 resourceResponse->setString(TypeBuilder::Network::Response::MimeType
, cachedResource->response().mimeType()); |
349 m_resourcesData->addResource(requestId, cachedResource); | 349 m_resourcesData->addResource(requestId, cachedResource); |
350 } | 350 } |
351 | 351 |
352 InspectorPageAgent::ResourceType type = cachedResource ? InspectorPageAgent:
:cachedResourceType(*cachedResource) : InspectorPageAgent::OtherResource; | 352 InspectorPageAgent::ResourceType type = cachedResource ? InspectorPageAgent:
:cachedResourceType(*cachedResource) : InspectorPageAgent::OtherResource; |
353 if (m_loadingXHRSynchronously || m_resourcesData->resourceType(requestId) ==
InspectorPageAgent::XHRResource) | 353 if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::XHRResou
rce) |
354 type = InspectorPageAgent::XHRResource; | 354 type = InspectorPageAgent::XHRResource; |
355 else if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::Scr
iptResource) | 355 else if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::Scr
iptResource) |
356 type = InspectorPageAgent::ScriptResource; | 356 type = InspectorPageAgent::ScriptResource; |
357 else if (equalIgnoringFragmentIdentifier(response.url(), loader->url()) && !
loader->isCommitted()) | 357 else if (equalIgnoringFragmentIdentifier(response.url(), loader->url()) && !
loader->isCommitted()) |
358 type = InspectorPageAgent::DocumentResource; | 358 type = InspectorPageAgent::DocumentResource; |
359 | 359 |
360 m_resourcesData->responseReceived(requestId, m_pageAgent->frameId(loader->fr
ame()), response); | 360 m_resourcesData->responseReceived(requestId, m_pageAgent->frameId(loader->fr
ame()), response); |
361 m_resourcesData->setResourceType(requestId, type); | 361 m_resourcesData->setResourceType(requestId, type); |
362 m_frontend->responseReceived(requestId, m_pageAgent->frameId(loader->frame()
), m_pageAgent->loaderId(loader), currentTime(), InspectorPageAgent::resourceTyp
eJson(type), resourceResponse); | 362 m_frontend->responseReceived(requestId, m_pageAgent->frameId(loader->frame()
), m_pageAgent->loaderId(loader), currentTime(), InspectorPageAgent::resourceTyp
eJson(type), resourceResponse); |
363 // If we revalidated the resource and got Not modified, send content length
following didReceiveResponse | 363 // If we revalidated the resource and got Not modified, send content length
following didReceiveResponse |
364 // as there will be no calls to didReceiveData from the network stack. | 364 // as there will be no calls to didReceiveData from the network stack. |
365 if (isNotModified && cachedResource && cachedResource->encodedSize()) | 365 if (isNotModified && cachedResource && cachedResource->encodedSize()) |
366 didReceiveData(identifier, 0, cachedResource->encodedSize(), 0); | 366 didReceiveData(identifier, 0, cachedResource->encodedSize(), 0); |
367 } | 367 } |
368 | 368 |
369 static bool isErrorStatusCode(int statusCode) | 369 static bool isErrorStatusCode(int statusCode) |
370 { | 370 { |
371 return statusCode >= 400; | 371 return statusCode >= 400; |
372 } | 372 } |
373 | 373 |
374 void InspectorResourceAgent::didReceiveData(unsigned long identifier, const char
* data, int dataLength, int encodedDataLength) | 374 void InspectorResourceAgent::didReceiveData(unsigned long identifier, const char
* data, int dataLength, int encodedDataLength) |
375 { | 375 { |
376 String requestId = IdentifiersFactory::requestId(identifier); | 376 String requestId = IdentifiersFactory::requestId(identifier); |
377 | 377 |
378 if (data) { | 378 if (data) { |
379 NetworkResourcesData::ResourceData const* resourceData = m_resourcesData
->data(requestId); | 379 NetworkResourcesData::ResourceData const* resourceData = m_resourcesData
->data(requestId); |
380 if (resourceData && !m_loadingXHRSynchronously && (!resourceData->cached
Resource() || resourceData->cachedResource()->dataBufferingPolicy() == DoNotBuff
erData || isErrorStatusCode(resourceData->httpStatusCode()))) | 380 if (resourceData && (!resourceData->cachedResource() || resourceData->ca
chedResource()->dataBufferingPolicy() == DoNotBufferData || isErrorStatusCode(re
sourceData->httpStatusCode()))) |
381 m_resourcesData->maybeAddResourceData(requestId, data, dataLength); | 381 m_resourcesData->maybeAddResourceData(requestId, data, dataLength); |
382 } | 382 } |
383 | 383 |
384 m_frontend->dataReceived(requestId, currentTime(), dataLength, encodedDataLe
ngth); | 384 m_frontend->dataReceived(requestId, currentTime(), dataLength, encodedDataLe
ngth); |
385 } | 385 } |
386 | 386 |
387 void InspectorResourceAgent::didFinishLoading(unsigned long identifier, Document
Loader* loader, double monotonicFinishTime) | 387 void InspectorResourceAgent::didFinishLoading(unsigned long identifier, Document
Loader* loader, double monotonicFinishTime) |
388 { | 388 { |
389 double finishTime = 0.0; | 389 double finishTime = 0.0; |
390 // FIXME: Expose all of the timing details to inspector and have it calculat
e finishTime. | 390 // FIXME: Expose all of the timing details to inspector and have it calculat
e finishTime. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 m_pendingXHRReplayData.set(client, xhrReplayData); | 445 m_pendingXHRReplayData.set(client, xhrReplayData); |
446 } | 446 } |
447 | 447 |
448 void InspectorResourceAgent::didFailXHRLoading(ThreadableLoaderClient* client) | 448 void InspectorResourceAgent::didFailXHRLoading(ThreadableLoaderClient* client) |
449 { | 449 { |
450 m_pendingXHRReplayData.remove(client); | 450 m_pendingXHRReplayData.remove(client); |
451 } | 451 } |
452 | 452 |
453 void InspectorResourceAgent::didFinishXHRLoading(ThreadableLoaderClient* client,
unsigned long identifier, ScriptString sourceString, const String&, const Strin
g&, unsigned) | 453 void InspectorResourceAgent::didFinishXHRLoading(ThreadableLoaderClient* client,
unsigned long identifier, ScriptString sourceString, const String&, const Strin
g&, unsigned) |
454 { | 454 { |
455 // For Asynchronous XHRs, the inspector can grab the data directly off of th
e Resource. For sync XHRs, we need to | |
456 // provide the data here, since no Resource was involved. | |
457 if (m_loadingXHRSynchronously) | |
458 m_resourcesData->setResourceContent(IdentifiersFactory::requestId(identi
fier), sourceString.flattenToString()); | |
459 m_pendingXHRReplayData.remove(client); | 455 m_pendingXHRReplayData.remove(client); |
460 } | 456 } |
461 | 457 |
462 void InspectorResourceAgent::didReceiveXHRResponse(unsigned long identifier) | 458 void InspectorResourceAgent::didReceiveXHRResponse(unsigned long identifier) |
463 { | 459 { |
464 m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier),
InspectorPageAgent::XHRResource); | 460 m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier),
InspectorPageAgent::XHRResource); |
465 } | 461 } |
466 | 462 |
467 void InspectorResourceAgent::willLoadXHRSynchronously() | |
468 { | |
469 m_loadingXHRSynchronously = true; | |
470 } | |
471 | |
472 void InspectorResourceAgent::didLoadXHRSynchronously() | |
473 { | |
474 m_loadingXHRSynchronously = false; | |
475 } | |
476 | |
477 void InspectorResourceAgent::willDestroyResource(Resource* cachedResource) | 463 void InspectorResourceAgent::willDestroyResource(Resource* cachedResource) |
478 { | 464 { |
479 Vector<String> requestIds = m_resourcesData->removeResource(cachedResource); | 465 Vector<String> requestIds = m_resourcesData->removeResource(cachedResource); |
480 if (!requestIds.size()) | 466 if (!requestIds.size()) |
481 return; | 467 return; |
482 | 468 |
483 String content; | 469 String content; |
484 bool base64Encoded; | 470 bool base64Encoded; |
485 if (!InspectorPageAgent::cachedResourceContent(cachedResource, &content, &ba
se64Encoded)) | 471 if (!InspectorPageAgent::cachedResourceContent(cachedResource, &content, &ba
se64Encoded)) |
486 return; | 472 return; |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 m_frameNavigationInitiatorMap.remove(m_pageAgent->frameId(frame)); | 762 m_frameNavigationInitiatorMap.remove(m_pageAgent->frameId(frame)); |
777 } | 763 } |
778 | 764 |
779 InspectorResourceAgent::InspectorResourceAgent(InstrumentingAgents* instrumentin
gAgents, InspectorPageAgent* pageAgent, InspectorClient* client, InspectorCompos
iteState* state, InspectorOverlay* overlay) | 765 InspectorResourceAgent::InspectorResourceAgent(InstrumentingAgents* instrumentin
gAgents, InspectorPageAgent* pageAgent, InspectorClient* client, InspectorCompos
iteState* state, InspectorOverlay* overlay) |
780 : InspectorBaseAgent<InspectorResourceAgent>("Network", instrumentingAgents,
state) | 766 : InspectorBaseAgent<InspectorResourceAgent>("Network", instrumentingAgents,
state) |
781 , m_pageAgent(pageAgent) | 767 , m_pageAgent(pageAgent) |
782 , m_client(client) | 768 , m_client(client) |
783 , m_overlay(overlay) | 769 , m_overlay(overlay) |
784 , m_frontend(0) | 770 , m_frontend(0) |
785 , m_resourcesData(adoptPtr(new NetworkResourcesData())) | 771 , m_resourcesData(adoptPtr(new NetworkResourcesData())) |
786 , m_loadingXHRSynchronously(false) | |
787 , m_isRecalculatingStyle(false) | 772 , m_isRecalculatingStyle(false) |
788 { | 773 { |
789 } | 774 } |
790 | 775 |
791 } // namespace WebCore | 776 } // namespace WebCore |
792 | 777 |
OLD | NEW |