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 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 auto entry = blockedURLs->at(i); | 567 auto entry = blockedURLs->at(i); |
568 if (matches(url, entry.first)) { | 568 if (matches(url, entry.first)) { |
569 *result = true; | 569 *result = true; |
570 return; | 570 return; |
571 } | 571 } |
572 } | 572 } |
573 return; | 573 return; |
574 } | 574 } |
575 | 575 |
576 void InspectorNetworkAgent::didBlockRequest( | 576 void InspectorNetworkAgent::didBlockRequest( |
577 LocalFrame* frame, | |
578 const ResourceRequest& request, | 577 const ResourceRequest& request, |
579 DocumentLoader* loader, | 578 DocumentLoader* loader, |
580 const FetchInitiatorInfo& initiatorInfo, | 579 const FetchInitiatorInfo& initiatorInfo, |
581 ResourceRequestBlockedReason reason) { | 580 ResourceRequestBlockedReason reason) { |
582 unsigned long identifier = createUniqueIdentifier(); | 581 unsigned long identifier = createUniqueIdentifier(); |
583 willSendRequestInternal(frame, identifier, loader, request, | 582 willSendRequestInternal(identifier, loader, request, ResourceResponse(), |
584 ResourceResponse(), initiatorInfo); | 583 initiatorInfo); |
585 | 584 |
586 String requestId = IdentifiersFactory::requestId(identifier); | 585 String requestId = IdentifiersFactory::requestId(identifier); |
587 String protocolReason = buildBlockedReason(reason); | 586 String protocolReason = buildBlockedReason(reason); |
588 frontend()->loadingFailed(requestId, monotonicallyIncreasingTime(), | 587 frontend()->loadingFailed(requestId, monotonicallyIncreasingTime(), |
589 InspectorPageAgent::resourceTypeJson( | 588 InspectorPageAgent::resourceTypeJson( |
590 m_resourcesData->resourceType(requestId)), | 589 m_resourcesData->resourceType(requestId)), |
591 String(), false, protocolReason); | 590 String(), false, protocolReason); |
592 } | 591 } |
593 | 592 |
594 void InspectorNetworkAgent::didChangeResourcePriority( | 593 void InspectorNetworkAgent::didChangeResourcePriority( |
595 unsigned long identifier, | 594 unsigned long identifier, |
596 ResourceLoadPriority loadPriority) { | 595 ResourceLoadPriority loadPriority) { |
597 String requestId = IdentifiersFactory::requestId(identifier); | 596 String requestId = IdentifiersFactory::requestId(identifier); |
598 frontend()->resourceChangedPriority(requestId, | 597 frontend()->resourceChangedPriority(requestId, |
599 resourcePriorityJSON(loadPriority), | 598 resourcePriorityJSON(loadPriority), |
600 monotonicallyIncreasingTime()); | 599 monotonicallyIncreasingTime()); |
601 } | 600 } |
602 | 601 |
603 void InspectorNetworkAgent::willSendRequestInternal( | 602 void InspectorNetworkAgent::willSendRequestInternal( |
604 LocalFrame* frame, | |
605 unsigned long identifier, | 603 unsigned long identifier, |
606 DocumentLoader* loader, | 604 DocumentLoader* loader, |
607 const ResourceRequest& request, | 605 const ResourceRequest& request, |
608 const ResourceResponse& redirectResponse, | 606 const ResourceResponse& redirectResponse, |
609 const FetchInitiatorInfo& initiatorInfo) { | 607 const FetchInitiatorInfo& initiatorInfo) { |
610 String requestId = IdentifiersFactory::requestId(identifier); | 608 String requestId = IdentifiersFactory::requestId(identifier); |
611 String loaderId = IdentifiersFactory::loaderId(loader); | 609 String loaderId = loader ? IdentifiersFactory::loaderId(loader) : ""; |
612 m_resourcesData->resourceCreated(requestId, loaderId, request.url()); | 610 m_resourcesData->resourceCreated(requestId, loaderId, request.url()); |
613 | 611 |
614 InspectorPageAgent::ResourceType type = InspectorPageAgent::OtherResource; | 612 InspectorPageAgent::ResourceType type = InspectorPageAgent::OtherResource; |
615 if (initiatorInfo.name == FetchInitiatorTypeNames::xmlhttprequest) { | 613 if (initiatorInfo.name == FetchInitiatorTypeNames::xmlhttprequest) { |
616 type = InspectorPageAgent::XHRResource; | 614 type = InspectorPageAgent::XHRResource; |
617 m_resourcesData->setResourceType(requestId, type); | 615 m_resourcesData->setResourceType(requestId, type); |
618 } else if (initiatorInfo.name == FetchInitiatorTypeNames::document) { | 616 } else if (initiatorInfo.name == FetchInitiatorTypeNames::document) { |
619 type = InspectorPageAgent::DocumentResource; | 617 type = InspectorPageAgent::DocumentResource; |
620 m_resourcesData->setResourceType(requestId, type); | 618 m_resourcesData->setResourceType(requestId, type); |
621 } | 619 } |
622 | 620 String frameId = loader && loader->frame() |
623 String frameId = | 621 ? IdentifiersFactory::frameId(loader->frame()) |
624 loader->frame() ? IdentifiersFactory::frameId(loader->frame()) : ""; | 622 : ""; |
625 std::unique_ptr<protocol::Network::Initiator> initiatorObject = | 623 std::unique_ptr<protocol::Network::Initiator> initiatorObject = |
626 buildInitiatorObject(loader->frame() ? loader->frame()->document() : 0, | 624 buildInitiatorObject( |
627 initiatorInfo); | 625 loader && loader->frame() ? loader->frame()->document() : 0, |
| 626 initiatorInfo); |
628 if (initiatorInfo.name == FetchInitiatorTypeNames::document) { | 627 if (initiatorInfo.name == FetchInitiatorTypeNames::document) { |
629 FrameNavigationInitiatorMap::iterator it = | 628 FrameNavigationInitiatorMap::iterator it = |
630 m_frameNavigationInitiatorMap.find(frameId); | 629 m_frameNavigationInitiatorMap.find(frameId); |
631 if (it != m_frameNavigationInitiatorMap.end()) | 630 if (it != m_frameNavigationInitiatorMap.end()) |
632 initiatorObject = it->value->clone(); | 631 initiatorObject = it->value->clone(); |
633 } | 632 } |
634 | 633 |
635 std::unique_ptr<protocol::Network::Request> requestInfo( | 634 std::unique_ptr<protocol::Network::Request> requestInfo( |
636 buildObjectForResourceRequest(request)); | 635 buildObjectForResourceRequest(request)); |
637 | 636 |
638 requestInfo->setMixedContentType(mixedContentTypeForContextType( | 637 if (loader) { |
639 MixedContentChecker::contextTypeForInspector(frame, request))); | 638 requestInfo->setMixedContentType(mixedContentTypeForContextType( |
| 639 MixedContentChecker::contextTypeForInspector(loader->frame(), |
| 640 request))); |
| 641 } |
640 | 642 |
641 requestInfo->setReferrerPolicy(referrerPolicy(request.getReferrerPolicy())); | 643 requestInfo->setReferrerPolicy(referrerPolicy(request.getReferrerPolicy())); |
642 if (initiatorInfo.isLinkPreload) | 644 if (initiatorInfo.isLinkPreload) |
643 requestInfo->setIsLinkPreload(true); | 645 requestInfo->setIsLinkPreload(true); |
644 | 646 |
645 String resourceType = InspectorPageAgent::resourceTypeJson(type); | 647 String resourceType = InspectorPageAgent::resourceTypeJson(type); |
646 frontend()->requestWillBeSent( | 648 frontend()->requestWillBeSent( |
647 requestId, frameId, loaderId, | 649 requestId, frameId, loaderId, |
648 urlWithoutFragment(loader->url()).getString(), std::move(requestInfo), | 650 loader ? urlWithoutFragment(loader->url()).getString() : "", |
649 monotonicallyIncreasingTime(), currentTime(), std::move(initiatorObject), | 651 std::move(requestInfo), monotonicallyIncreasingTime(), currentTime(), |
| 652 std::move(initiatorObject), |
650 buildObjectForResourceResponse(redirectResponse), resourceType); | 653 buildObjectForResourceResponse(redirectResponse), resourceType); |
651 if (m_pendingXHRReplayData && !m_pendingXHRReplayData->async()) | 654 if (m_pendingXHRReplayData && !m_pendingXHRReplayData->async()) |
652 frontend()->flush(); | 655 frontend()->flush(); |
653 } | 656 } |
654 | 657 |
655 void InspectorNetworkAgent::willSendRequest( | 658 void InspectorNetworkAgent::willSendRequest( |
656 LocalFrame* frame, | |
657 unsigned long identifier, | 659 unsigned long identifier, |
658 DocumentLoader* loader, | 660 DocumentLoader* loader, |
659 ResourceRequest& request, | 661 ResourceRequest& request, |
660 const ResourceResponse& redirectResponse, | 662 const ResourceResponse& redirectResponse, |
661 const FetchInitiatorInfo& initiatorInfo) { | 663 const FetchInitiatorInfo& initiatorInfo) { |
662 // Ignore the request initiated internally. | 664 // Ignore the request initiated internally. |
663 if (initiatorInfo.name == FetchInitiatorTypeNames::internal) | 665 if (initiatorInfo.name == FetchInitiatorTypeNames::internal) |
664 return; | 666 return; |
665 | 667 |
666 if (initiatorInfo.name == FetchInitiatorTypeNames::document && | 668 if (initiatorInfo.name == FetchInitiatorTypeNames::document && |
(...skipping 19 matching lines...) Expand all Loading... |
686 request.requestContext() != WebURLRequest::RequestContextInternal) { | 688 request.requestContext() != WebURLRequest::RequestContextInternal) { |
687 request.setCachePolicy(WebCachePolicy::BypassCacheLoadOnlyFromCache); | 689 request.setCachePolicy(WebCachePolicy::BypassCacheLoadOnlyFromCache); |
688 } else { | 690 } else { |
689 request.setCachePolicy(WebCachePolicy::BypassingCache); | 691 request.setCachePolicy(WebCachePolicy::BypassingCache); |
690 } | 692 } |
691 request.setShouldResetAppCache(true); | 693 request.setShouldResetAppCache(true); |
692 } | 694 } |
693 if (m_state->booleanProperty(NetworkAgentState::bypassServiceWorker, false)) | 695 if (m_state->booleanProperty(NetworkAgentState::bypassServiceWorker, false)) |
694 request.setServiceWorkerMode(WebURLRequest::ServiceWorkerMode::None); | 696 request.setServiceWorkerMode(WebURLRequest::ServiceWorkerMode::None); |
695 | 697 |
696 willSendRequestInternal(frame, identifier, loader, request, redirectResponse, | 698 willSendRequestInternal(identifier, loader, request, redirectResponse, |
697 initiatorInfo); | 699 initiatorInfo); |
698 | 700 |
699 if (!m_hostId.isEmpty()) | 701 if (!m_hostId.isEmpty()) |
700 request.addHTTPHeaderField( | 702 request.addHTTPHeaderField( |
701 HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id, | 703 HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id, |
702 AtomicString(m_hostId)); | 704 AtomicString(m_hostId)); |
703 | 705 |
704 request.setHTTPHeaderField( | 706 request.setHTTPHeaderField( |
705 HTTPNames::X_DevTools_Request_Id, | 707 HTTPNames::X_DevTools_Request_Id, |
706 AtomicString(IdentifiersFactory::requestId(identifier))); | 708 AtomicString(IdentifiersFactory::requestId(identifier))); |
707 } | 709 } |
708 | 710 |
709 void InspectorNetworkAgent::markResourceAsCached(unsigned long identifier) { | 711 void InspectorNetworkAgent::markResourceAsCached(unsigned long identifier) { |
710 frontend()->requestServedFromCache(IdentifiersFactory::requestId(identifier)); | 712 frontend()->requestServedFromCache(IdentifiersFactory::requestId(identifier)); |
711 } | 713 } |
712 | 714 |
713 void InspectorNetworkAgent::didReceiveResourceResponse( | 715 void InspectorNetworkAgent::didReceiveResourceResponse( |
714 LocalFrame* frame, | |
715 unsigned long identifier, | 716 unsigned long identifier, |
716 DocumentLoader* loader, | 717 DocumentLoader* loader, |
717 const ResourceResponse& response, | 718 const ResourceResponse& response, |
718 Resource* cachedResource) { | 719 Resource* cachedResource) { |
719 String requestId = IdentifiersFactory::requestId(identifier); | 720 String requestId = IdentifiersFactory::requestId(identifier); |
720 bool isNotModified = response.httpStatusCode() == 304; | 721 bool isNotModified = response.httpStatusCode() == 304; |
721 | 722 |
722 bool resourceIsEmpty = true; | 723 bool resourceIsEmpty = true; |
723 std::unique_ptr<protocol::Network::Response> resourceResponse = | 724 std::unique_ptr<protocol::Network::Response> resourceResponse = |
724 buildObjectForResourceResponse(response, cachedResource, | 725 buildObjectForResourceResponse(response, cachedResource, |
(...skipping 15 matching lines...) Expand all Loading... |
740 if (type == InspectorPageAgent::DocumentResource && loader && | 741 if (type == InspectorPageAgent::DocumentResource && loader && |
741 loader->substituteData().isValid()) | 742 loader->substituteData().isValid()) |
742 return; | 743 return; |
743 | 744 |
744 // Resources are added to NetworkResourcesData as a WeakMember here and | 745 // Resources are added to NetworkResourcesData as a WeakMember here and |
745 // removed in willDestroyResource() called in the prefinalizer of Resource. | 746 // removed in willDestroyResource() called in the prefinalizer of Resource. |
746 // Because NetworkResourceData retains weak references only, it | 747 // Because NetworkResourceData retains weak references only, it |
747 // doesn't affect Resource lifetime. | 748 // doesn't affect Resource lifetime. |
748 if (cachedResource) | 749 if (cachedResource) |
749 m_resourcesData->addResource(requestId, cachedResource); | 750 m_resourcesData->addResource(requestId, cachedResource); |
750 String frameId = IdentifiersFactory::frameId(frame); | 751 String frameId = loader && loader->frame() |
| 752 ? IdentifiersFactory::frameId(loader->frame()) |
| 753 : ""; |
751 String loaderId = loader ? IdentifiersFactory::loaderId(loader) : ""; | 754 String loaderId = loader ? IdentifiersFactory::loaderId(loader) : ""; |
752 m_resourcesData->responseReceived(requestId, frameId, response); | 755 m_resourcesData->responseReceived(requestId, frameId, response); |
753 m_resourcesData->setResourceType(requestId, type); | 756 m_resourcesData->setResourceType(requestId, type); |
754 | 757 |
755 if (response.getSecurityStyle() != ResourceResponse::SecurityStyleUnknown && | 758 if (response.getSecurityStyle() != ResourceResponse::SecurityStyleUnknown && |
756 response.getSecurityStyle() != | 759 response.getSecurityStyle() != |
757 ResourceResponse::SecurityStyleUnauthenticated) { | 760 ResourceResponse::SecurityStyleUnauthenticated) { |
758 const ResourceResponse::SecurityDetails* responseSecurityDetails = | 761 const ResourceResponse::SecurityDetails* responseSecurityDetails = |
759 response.getSecurityDetails(); | 762 response.getSecurityDetails(); |
760 m_resourcesData->setCertificate(requestId, | 763 m_resourcesData->setCertificate(requestId, |
761 responseSecurityDetails->certificate); | 764 responseSecurityDetails->certificate); |
762 } | 765 } |
763 | 766 |
764 if (resourceResponse && !resourceIsEmpty) | 767 if (resourceResponse && !resourceIsEmpty) |
765 frontend()->responseReceived(requestId, frameId, loaderId, | 768 frontend()->responseReceived(requestId, frameId, loaderId, |
766 monotonicallyIncreasingTime(), | 769 monotonicallyIncreasingTime(), |
767 InspectorPageAgent::resourceTypeJson(type), | 770 InspectorPageAgent::resourceTypeJson(type), |
768 std::move(resourceResponse)); | 771 std::move(resourceResponse)); |
769 // If we revalidated the resource and got Not modified, send content length | 772 // If we revalidated the resource and got Not modified, send content length |
770 // following didReceiveResponse as there will be no calls to didReceiveData | 773 // following didReceiveResponse as there will be no calls to didReceiveData |
771 // from the network stack. | 774 // from the network stack. |
772 if (isNotModified && cachedResource && cachedResource->encodedSize()) | 775 if (isNotModified && cachedResource && cachedResource->encodedSize()) |
773 didReceiveData(frame, identifier, 0, cachedResource->encodedSize()); | 776 didReceiveData(identifier, loader, 0, cachedResource->encodedSize()); |
774 } | 777 } |
775 | 778 |
776 static bool isErrorStatusCode(int statusCode) { | 779 static bool isErrorStatusCode(int statusCode) { |
777 return statusCode >= 400; | 780 return statusCode >= 400; |
778 } | 781 } |
779 | 782 |
780 void InspectorNetworkAgent::didReceiveData(LocalFrame*, | 783 void InspectorNetworkAgent::didReceiveData(unsigned long identifier, |
781 unsigned long identifier, | 784 DocumentLoader* loader, |
782 const char* data, | 785 const char* data, |
783 int dataLength) { | 786 int dataLength) { |
784 String requestId = IdentifiersFactory::requestId(identifier); | 787 String requestId = IdentifiersFactory::requestId(identifier); |
785 | 788 |
786 if (data) { | 789 if (data) { |
787 NetworkResourcesData::ResourceData const* resourceData = | 790 NetworkResourcesData::ResourceData const* resourceData = |
788 m_resourcesData->data(requestId); | 791 m_resourcesData->data(requestId); |
789 if (resourceData && | 792 if (resourceData && |
790 (!resourceData->cachedResource() || | 793 (!resourceData->cachedResource() || |
791 resourceData->cachedResource()->getDataBufferingPolicy() == | 794 resourceData->cachedResource()->getDataBufferingPolicy() == |
792 DoNotBufferData || | 795 DoNotBufferData || |
793 isErrorStatusCode(resourceData->httpStatusCode()))) | 796 isErrorStatusCode(resourceData->httpStatusCode()))) |
794 m_resourcesData->maybeAddResourceData(requestId, data, dataLength); | 797 m_resourcesData->maybeAddResourceData(requestId, data, dataLength); |
795 } | 798 } |
796 | 799 |
797 frontend()->dataReceived( | 800 frontend()->dataReceived( |
798 requestId, monotonicallyIncreasingTime(), dataLength, | 801 requestId, monotonicallyIncreasingTime(), dataLength, |
799 m_resourcesData->getAndClearPendingEncodedDataLength(requestId)); | 802 m_resourcesData->getAndClearPendingEncodedDataLength(requestId)); |
800 } | 803 } |
801 | 804 |
802 void InspectorNetworkAgent::didReceiveEncodedDataLength( | 805 void InspectorNetworkAgent::didReceiveEncodedDataLength( |
803 LocalFrame*, | |
804 unsigned long identifier, | 806 unsigned long identifier, |
805 int encodedDataLength) { | 807 int encodedDataLength) { |
806 String requestId = IdentifiersFactory::requestId(identifier); | 808 String requestId = IdentifiersFactory::requestId(identifier); |
807 m_resourcesData->addPendingEncodedDataLength(requestId, encodedDataLength); | 809 m_resourcesData->addPendingEncodedDataLength(requestId, encodedDataLength); |
808 } | 810 } |
809 | 811 |
810 void InspectorNetworkAgent::didFinishLoading(LocalFrame*, | 812 void InspectorNetworkAgent::didFinishLoading(unsigned long identifier, |
811 unsigned long identifier, | 813 DocumentLoader*, |
812 double monotonicFinishTime, | 814 double monotonicFinishTime, |
813 int64_t encodedDataLength, | 815 int64_t encodedDataLength, |
814 int64_t decodedBodyLength) { | 816 int64_t decodedBodyLength) { |
815 String requestId = IdentifiersFactory::requestId(identifier); | 817 String requestId = IdentifiersFactory::requestId(identifier); |
816 NetworkResourcesData::ResourceData const* resourceData = | 818 NetworkResourcesData::ResourceData const* resourceData = |
817 m_resourcesData->data(requestId); | 819 m_resourcesData->data(requestId); |
818 | 820 |
819 int pendingEncodedDataLength = | 821 int pendingEncodedDataLength = |
820 m_resourcesData->getAndClearPendingEncodedDataLength(requestId); | 822 m_resourcesData->getAndClearPendingEncodedDataLength(requestId); |
821 if (pendingEncodedDataLength > 0) { | 823 if (pendingEncodedDataLength > 0) { |
(...skipping 16 matching lines...) Expand all Loading... |
838 encodedDataLength); | 840 encodedDataLength); |
839 } | 841 } |
840 | 842 |
841 void InspectorNetworkAgent::didReceiveCORSRedirectResponse( | 843 void InspectorNetworkAgent::didReceiveCORSRedirectResponse( |
842 LocalFrame* frame, | 844 LocalFrame* frame, |
843 unsigned long identifier, | 845 unsigned long identifier, |
844 DocumentLoader* loader, | 846 DocumentLoader* loader, |
845 const ResourceResponse& response, | 847 const ResourceResponse& response, |
846 Resource* resource) { | 848 Resource* resource) { |
847 // Update the response and finish loading | 849 // Update the response and finish loading |
848 didReceiveResourceResponse(frame, identifier, loader, response, resource); | 850 didReceiveResourceResponse(identifier, loader, response, resource); |
849 didFinishLoading(frame, identifier, 0, | 851 didFinishLoading(identifier, loader, 0, |
850 WebURLLoaderClient::kUnknownEncodedDataLength, 0); | 852 WebURLLoaderClient::kUnknownEncodedDataLength, 0); |
851 } | 853 } |
852 | 854 |
853 void InspectorNetworkAgent::didFailLoading(unsigned long identifier, | 855 void InspectorNetworkAgent::didFailLoading(unsigned long identifier, |
854 const ResourceError& error) { | 856 const ResourceError& error) { |
855 String requestId = IdentifiersFactory::requestId(identifier); | 857 String requestId = IdentifiersFactory::requestId(identifier); |
856 bool canceled = error.isCancellation(); | 858 bool canceled = error.isCancellation(); |
857 frontend()->loadingFailed(requestId, monotonicallyIncreasingTime(), | 859 frontend()->loadingFailed(requestId, monotonicallyIncreasingTime(), |
858 InspectorPageAgent::resourceTypeJson( | 860 InspectorPageAgent::resourceTypeJson( |
859 m_resourcesData->resourceType(requestId)), | 861 m_resourcesData->resourceType(requestId)), |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
925 m_pendingXHRReplayData = XHRReplayData::create( | 927 m_pendingXHRReplayData = XHRReplayData::create( |
926 xhr->getExecutionContext(), method, urlWithoutFragment(url), async, | 928 xhr->getExecutionContext(), method, urlWithoutFragment(url), async, |
927 formData.get(), includeCredentials); | 929 formData.get(), includeCredentials); |
928 for (const auto& header : headers) | 930 for (const auto& header : headers) |
929 m_pendingXHRReplayData->addHeader(header.key, header.value); | 931 m_pendingXHRReplayData->addHeader(header.key, header.value); |
930 } | 932 } |
931 | 933 |
932 void InspectorNetworkAgent::delayedRemoveReplayXHR(XMLHttpRequest* xhr) { | 934 void InspectorNetworkAgent::delayedRemoveReplayXHR(XMLHttpRequest* xhr) { |
933 if (!m_replayXHRs.contains(xhr)) | 935 if (!m_replayXHRs.contains(xhr)) |
934 return; | 936 return; |
| 937 // TODO(horo): |m_removeFinishedReplayXHRTimer| is null on workers. |
| 938 DCHECK(m_removeFinishedReplayXHRTimer); |
935 m_replayXHRsToBeDeleted.insert(xhr); | 939 m_replayXHRsToBeDeleted.insert(xhr); |
936 m_replayXHRs.erase(xhr); | 940 m_replayXHRs.erase(xhr); |
937 m_removeFinishedReplayXHRTimer.startOneShot(0, BLINK_FROM_HERE); | 941 m_removeFinishedReplayXHRTimer->startOneShot(0, BLINK_FROM_HERE); |
938 } | 942 } |
939 | 943 |
940 void InspectorNetworkAgent::didFailXHRLoading(ExecutionContext* context, | 944 void InspectorNetworkAgent::didFailXHRLoading(ExecutionContext* context, |
941 XMLHttpRequest* xhr, | 945 XMLHttpRequest* xhr, |
942 ThreadableLoaderClient* client, | 946 ThreadableLoaderClient* client, |
943 const AtomicString& method, | 947 const AtomicString& method, |
944 const String& url) { | 948 const String& url) { |
945 didFinishXHRInternal(context, xhr, client, method, url, false); | 949 didFinishXHRInternal(context, xhr, client, method, url, false); |
946 } | 950 } |
947 | 951 |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1416 else | 1420 else |
1417 networkStateNotifier().clearOverride(); | 1421 networkStateNotifier().clearOverride(); |
1418 return Response::OK(); | 1422 return Response::OK(); |
1419 } | 1423 } |
1420 | 1424 |
1421 Response InspectorNetworkAgent::setCacheDisabled(bool cacheDisabled) { | 1425 Response InspectorNetworkAgent::setCacheDisabled(bool cacheDisabled) { |
1422 // TODO(ananta) | 1426 // TODO(ananta) |
1423 // We should extract network cache state into a global entity which can be | 1427 // We should extract network cache state into a global entity which can be |
1424 // queried from FrameLoader and other places. | 1428 // queried from FrameLoader and other places. |
1425 m_state->setBoolean(NetworkAgentState::cacheDisabled, cacheDisabled); | 1429 m_state->setBoolean(NetworkAgentState::cacheDisabled, cacheDisabled); |
1426 if (cacheDisabled) | 1430 if (cacheDisabled && isMainThread()) |
1427 memoryCache()->evictResources(); | 1431 memoryCache()->evictResources(); |
1428 return Response::OK(); | 1432 return Response::OK(); |
1429 } | 1433 } |
1430 | 1434 |
1431 Response InspectorNetworkAgent::setBypassServiceWorker(bool bypass) { | 1435 Response InspectorNetworkAgent::setBypassServiceWorker(bool bypass) { |
1432 m_state->setBoolean(NetworkAgentState::bypassServiceWorker, bypass); | 1436 m_state->setBoolean(NetworkAgentState::bypassServiceWorker, bypass); |
1433 return Response::OK(); | 1437 return Response::OK(); |
1434 } | 1438 } |
1435 | 1439 |
1436 Response InspectorNetworkAgent::setDataSizeLimitsForTest(int maxTotal, | 1440 Response InspectorNetworkAgent::setDataSizeLimitsForTest(int maxTotal, |
(...skipping 19 matching lines...) Expand all Loading... |
1456 } | 1460 } |
1457 } | 1461 } |
1458 return Response::OK(); | 1462 return Response::OK(); |
1459 } | 1463 } |
1460 | 1464 |
1461 void InspectorNetworkAgent::didCommitLoad(LocalFrame* frame, | 1465 void InspectorNetworkAgent::didCommitLoad(LocalFrame* frame, |
1462 DocumentLoader* loader) { | 1466 DocumentLoader* loader) { |
1463 if (loader->frame() != m_inspectedFrames->root()) | 1467 if (loader->frame() != m_inspectedFrames->root()) |
1464 return; | 1468 return; |
1465 | 1469 |
1466 if (m_state->booleanProperty(NetworkAgentState::cacheDisabled, false)) | 1470 if (m_state->booleanProperty(NetworkAgentState::cacheDisabled, false) && |
| 1471 isMainThread()) |
1467 memoryCache()->evictResources(MemoryCache::DoNotEvictUnusedPreloads); | 1472 memoryCache()->evictResources(MemoryCache::DoNotEvictUnusedPreloads); |
1468 | 1473 |
1469 m_resourcesData->clear(IdentifiersFactory::loaderId(loader)); | 1474 m_resourcesData->clear(IdentifiersFactory::loaderId(loader)); |
1470 } | 1475 } |
1471 | 1476 |
1472 void InspectorNetworkAgent::frameScheduledNavigation(LocalFrame* frame, | 1477 void InspectorNetworkAgent::frameScheduledNavigation(LocalFrame* frame, |
1473 double) { | 1478 double) { |
1474 String frameId = IdentifiersFactory::frameId(frame); | 1479 String frameId = IdentifiersFactory::frameId(frame); |
1475 m_framesWithScheduledNavigation.insert(frameId); | 1480 m_framesWithScheduledNavigation.insert(frameId); |
1476 if (!m_framesWithScheduledClientNavigation.contains(frameId)) { | 1481 if (!m_framesWithScheduledClientNavigation.contains(frameId)) { |
(...skipping 29 matching lines...) Expand all Loading... |
1506 void InspectorNetworkAgent::setHostId(const String& hostId) { | 1511 void InspectorNetworkAgent::setHostId(const String& hostId) { |
1507 m_hostId = hostId; | 1512 m_hostId = hostId; |
1508 } | 1513 } |
1509 | 1514 |
1510 bool InspectorNetworkAgent::fetchResourceContent(Document* document, | 1515 bool InspectorNetworkAgent::fetchResourceContent(Document* document, |
1511 const KURL& url, | 1516 const KURL& url, |
1512 String* content, | 1517 String* content, |
1513 bool* base64Encoded) { | 1518 bool* base64Encoded) { |
1514 // First try to fetch content from the cached resource. | 1519 // First try to fetch content from the cached resource. |
1515 Resource* cachedResource = document->fetcher()->cachedResource(url); | 1520 Resource* cachedResource = document->fetcher()->cachedResource(url); |
1516 if (!cachedResource) | 1521 if (!cachedResource && isMainThread()) { |
1517 cachedResource = memoryCache()->resourceForURL( | 1522 cachedResource = memoryCache()->resourceForURL( |
1518 url, document->fetcher()->getCacheIdentifier()); | 1523 url, document->fetcher()->getCacheIdentifier()); |
| 1524 } |
1519 if (cachedResource && InspectorPageAgent::cachedResourceContent( | 1525 if (cachedResource && InspectorPageAgent::cachedResourceContent( |
1520 cachedResource, content, base64Encoded)) | 1526 cachedResource, content, base64Encoded)) |
1521 return true; | 1527 return true; |
1522 | 1528 |
1523 // Then fall back to resource data. | 1529 // Then fall back to resource data. |
1524 for (auto& resource : m_resourcesData->resources()) { | 1530 for (auto& resource : m_resourcesData->resources()) { |
1525 if (resource->requestedURL() == url) { | 1531 if (resource->requestedURL() == url) { |
1526 *content = resource->content(); | 1532 *content = resource->content(); |
1527 *base64Encoded = resource->base64Encoded(); | 1533 *base64Encoded = resource->base64Encoded(); |
1528 return true; | 1534 return true; |
(...skipping 11 matching lines...) Expand all Loading... |
1540 void InspectorNetworkAgent::removeFinishedReplayXHRFired(TimerBase*) { | 1546 void InspectorNetworkAgent::removeFinishedReplayXHRFired(TimerBase*) { |
1541 m_replayXHRsToBeDeleted.clear(); | 1547 m_replayXHRsToBeDeleted.clear(); |
1542 } | 1548 } |
1543 | 1549 |
1544 InspectorNetworkAgent::InspectorNetworkAgent(InspectedFrames* inspectedFrames) | 1550 InspectorNetworkAgent::InspectorNetworkAgent(InspectedFrames* inspectedFrames) |
1545 : m_inspectedFrames(inspectedFrames), | 1551 : m_inspectedFrames(inspectedFrames), |
1546 m_resourcesData(NetworkResourcesData::create(maximumTotalBufferSize, | 1552 m_resourcesData(NetworkResourcesData::create(maximumTotalBufferSize, |
1547 maximumResourceBufferSize)), | 1553 maximumResourceBufferSize)), |
1548 m_pendingRequest(nullptr), | 1554 m_pendingRequest(nullptr), |
1549 m_removeFinishedReplayXHRTimer( | 1555 m_removeFinishedReplayXHRTimer( |
1550 TaskRunnerHelper::get(TaskType::UnspecedLoading, | 1556 inspectedFrames |
1551 inspectedFrames->root()), | 1557 ? new TaskRunnerTimer<InspectorNetworkAgent>( |
1552 this, | 1558 TaskRunnerHelper::get(TaskType::UnspecedLoading, |
1553 &InspectorNetworkAgent::removeFinishedReplayXHRFired) {} | 1559 inspectedFrames->root()), |
| 1560 this, |
| 1561 &InspectorNetworkAgent::removeFinishedReplayXHRFired) |
| 1562 : nullptr) {} |
1554 | 1563 |
1555 void InspectorNetworkAgent::shouldForceCORSPreflight(bool* result) { | 1564 void InspectorNetworkAgent::shouldForceCORSPreflight(bool* result) { |
1556 if (m_state->booleanProperty(NetworkAgentState::cacheDisabled, false)) | 1565 if (m_state->booleanProperty(NetworkAgentState::cacheDisabled, false)) |
1557 *result = true; | 1566 *result = true; |
1558 } | 1567 } |
1559 | 1568 |
1560 } // namespace blink | 1569 } // namespace blink |
OLD | NEW |