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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 | 87 |
88 namespace { | 88 namespace { |
89 | 89 |
90 // Keep in sync with kDevToolsRequestInitiator defined in devtools_network_contr oller.cc | 90 // Keep in sync with kDevToolsRequestInitiator defined in devtools_network_contr oller.cc |
91 const char kDevToolsRequestInitiator[] = "X-DevTools-Request-Initiator"; | 91 const char kDevToolsRequestInitiator[] = "X-DevTools-Request-Initiator"; |
92 const char kDevToolsEmulateNetworkConditionsClientId[] = "X-DevTools-Emulate-Net work-Conditions-Client-Id"; | 92 const char kDevToolsEmulateNetworkConditionsClientId[] = "X-DevTools-Emulate-Net work-Conditions-Client-Id"; |
93 | 93 |
94 static PassRefPtr<JSONObject> buildObjectForHeaders(const HTTPHeaderMap& headers ) | 94 static PassRefPtr<JSONObject> buildObjectForHeaders(const HTTPHeaderMap& headers ) |
95 { | 95 { |
96 RefPtr<JSONObject> headersObject = JSONObject::create(); | 96 RefPtr<JSONObject> headersObject = JSONObject::create(); |
97 HTTPHeaderMap::const_iterator end = headers.end(); | 97 for (const auto& it : headers) |
98 for (HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it) | 98 headersObject->setString(it.key.string(), it.value); |
99 headersObject->setString(it->key.string(), it->value); | |
100 return headersObject; | 99 return headersObject; |
101 } | 100 } |
102 | 101 |
103 class InspectorFileReaderLoaderClient final : public FileReaderLoaderClient { | 102 class InspectorFileReaderLoaderClient final : public FileReaderLoaderClient { |
104 WTF_MAKE_NONCOPYABLE(InspectorFileReaderLoaderClient); | 103 WTF_MAKE_NONCOPYABLE(InspectorFileReaderLoaderClient); |
105 public: | 104 public: |
106 InspectorFileReaderLoaderClient(PassRefPtr<BlobDataHandle> blob, PassOwnPtr< TextResourceDecoder> decoder, PassRefPtrWillBeRawPtr<GetResponseBodyCallback> ca llback) | 105 InspectorFileReaderLoaderClient(PassRefPtr<BlobDataHandle> blob, PassOwnPtr< TextResourceDecoder> decoder, PassRefPtrWillBeRawPtr<GetResponseBodyCallback> ca llback) |
107 : m_blob(blob) | 106 : m_blob(blob) |
108 , m_decoder(decoder) | 107 , m_decoder(decoder) |
109 , m_callback(callback) | 108 , m_callback(callback) |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
402 type = InspectorPageAgent::XHRResource; | 401 type = InspectorPageAgent::XHRResource; |
403 m_resourcesData->setResourceType(requestId, type); | 402 m_resourcesData->setResourceType(requestId, type); |
404 } else if (initiatorInfo.name == FetchInitiatorTypeNames::document) { | 403 } else if (initiatorInfo.name == FetchInitiatorTypeNames::document) { |
405 type = InspectorPageAgent::DocumentResource; | 404 type = InspectorPageAgent::DocumentResource; |
406 m_resourcesData->setResourceType(requestId, type); | 405 m_resourcesData->setResourceType(requestId, type); |
407 } | 406 } |
408 | 407 |
409 RefPtr<JSONObject> headers = m_state->getObject(ResourceAgentState::extraReq uestHeaders); | 408 RefPtr<JSONObject> headers = m_state->getObject(ResourceAgentState::extraReq uestHeaders); |
410 | 409 |
411 if (headers) { | 410 if (headers) { |
412 JSONObject::const_iterator end = headers->end(); | 411 for (const auto& it : *headers) { |
413 for (JSONObject::const_iterator it = headers->begin(); it != end; ++it) { | |
414 String value; | 412 String value; |
415 if (it->value->asString(&value)) | 413 if (it.value->asString(&value)) |
416 request.setHTTPHeaderField(AtomicString(it->key), AtomicString(v alue)); | 414 request.setHTTPHeaderField(AtomicString(it.key), AtomicString(va lue)); |
417 } | 415 } |
418 } | 416 } |
419 | 417 |
420 request.setReportRawHeaders(true); | 418 request.setReportRawHeaders(true); |
421 | 419 |
422 if (m_state->getBoolean(ResourceAgentState::cacheDisabled)) { | 420 if (m_state->getBoolean(ResourceAgentState::cacheDisabled)) { |
423 request.setCachePolicy(ReloadBypassingCache); | 421 request.setCachePolicy(ReloadBypassingCache); |
424 request.setShouldResetAppCache(true); | 422 request.setShouldResetAppCache(true); |
425 } | 423 } |
426 | 424 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
567 m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::XHRResource); | 565 m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::XHRResource); |
568 XHRReplayData* xhrReplayData = it->value.get(); | 566 XHRReplayData* xhrReplayData = it->value.get(); |
569 String requestId = IdentifiersFactory::requestId(identifier); | 567 String requestId = IdentifiersFactory::requestId(identifier); |
570 m_resourcesData->setXHRReplayData(requestId, xhrReplayData); | 568 m_resourcesData->setXHRReplayData(requestId, xhrReplayData); |
571 } | 569 } |
572 | 570 |
573 void InspectorResourceAgent::willLoadXHR(XMLHttpRequest* xhr, ThreadableLoaderCl ient* client, const AtomicString& method, const KURL& url, bool async, PassRefPt r<FormData> formData, const HTTPHeaderMap& headers, bool includeCredentials) | 571 void InspectorResourceAgent::willLoadXHR(XMLHttpRequest* xhr, ThreadableLoaderCl ient* client, const AtomicString& method, const KURL& url, bool async, PassRefPt r<FormData> formData, const HTTPHeaderMap& headers, bool includeCredentials) |
574 { | 572 { |
575 ASSERT(xhr); | 573 ASSERT(xhr); |
576 RefPtrWillBeRawPtr<XHRReplayData> xhrReplayData = XHRReplayData::create(xhr- >executionContext(), method, urlWithoutFragment(url), async, formData.get(), inc ludeCredentials); | 574 RefPtrWillBeRawPtr<XHRReplayData> xhrReplayData = XHRReplayData::create(xhr- >executionContext(), method, urlWithoutFragment(url), async, formData.get(), inc ludeCredentials); |
577 HTTPHeaderMap::const_iterator end = headers.end(); | 575 for (const auto& it : headers) |
578 for (HTTPHeaderMap::const_iterator it = headers.begin(); it!= end; ++it) | 576 xhrReplayData->addHeader(it.key, it.value); |
579 xhrReplayData->addHeader(it->key, it->value); | |
580 m_pendingXHRReplayData.set(client, xhrReplayData); | 577 m_pendingXHRReplayData.set(client, xhrReplayData); |
581 } | 578 } |
582 | 579 |
583 void InspectorResourceAgent::delayedRemoveReplayXHR(XMLHttpRequest* xhr) | 580 void InspectorResourceAgent::delayedRemoveReplayXHR(XMLHttpRequest* xhr) |
584 { | 581 { |
585 if (!m_replayXHRs.contains(xhr)) | 582 if (!m_replayXHRs.contains(xhr)) |
586 return; | 583 return; |
587 | 584 |
588 m_replayXHRsToBeDeleted.add(xhr); | 585 m_replayXHRsToBeDeleted.add(xhr); |
589 m_replayXHRs.remove(xhr); | 586 m_replayXHRs.remove(xhr); |
(...skipping 20 matching lines...) Expand all Loading... | |
610 void InspectorResourceAgent::willDestroyResource(Resource* cachedResource) | 607 void InspectorResourceAgent::willDestroyResource(Resource* cachedResource) |
611 { | 608 { |
612 Vector<String> requestIds = m_resourcesData->removeResource(cachedResource); | 609 Vector<String> requestIds = m_resourcesData->removeResource(cachedResource); |
613 if (!requestIds.size()) | 610 if (!requestIds.size()) |
614 return; | 611 return; |
615 | 612 |
616 String content; | 613 String content; |
617 bool base64Encoded; | 614 bool base64Encoded; |
618 if (!InspectorPageAgent::cachedResourceContent(cachedResource, &content, &ba se64Encoded)) | 615 if (!InspectorPageAgent::cachedResourceContent(cachedResource, &content, &ba se64Encoded)) |
619 return; | 616 return; |
620 Vector<String>::iterator end = requestIds.end(); | 617 for (auto it : requestIds) |
621 for (Vector<String>::iterator it = requestIds.begin(); it != end; ++it) | 618 m_resourcesData->setResourceContent(it, content, base64Encoded); |
622 m_resourcesData->setResourceContent(*it, content, base64Encoded); | |
623 } | 619 } |
624 | 620 |
625 void InspectorResourceAgent::applyUserAgentOverride(String* userAgent) | 621 void InspectorResourceAgent::applyUserAgentOverride(String* userAgent) |
626 { | 622 { |
627 String userAgentOverride = m_state->getString(ResourceAgentState::userAgentO verride); | 623 String userAgentOverride = m_state->getString(ResourceAgentState::userAgentO verride); |
628 if (!userAgentOverride.isEmpty()) | 624 if (!userAgentOverride.isEmpty()) |
629 *userAgent = userAgentOverride; | 625 *userAgent = userAgentOverride; |
630 } | 626 } |
631 | 627 |
632 void InspectorResourceAgent::willRecalculateStyle(Document*) | 628 void InspectorResourceAgent::willRecalculateStyle(Document*) |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
834 if (!executionContext) { | 830 if (!executionContext) { |
835 m_resourcesData->setXHRReplayData(requestId, 0); | 831 m_resourcesData->setXHRReplayData(requestId, 0); |
836 return; | 832 return; |
837 } | 833 } |
838 | 834 |
839 RefPtrWillBeRawPtr<XMLHttpRequest> xhr = XMLHttpRequest::create(executionCon text); | 835 RefPtrWillBeRawPtr<XMLHttpRequest> xhr = XMLHttpRequest::create(executionCon text); |
840 | 836 |
841 memoryCache()->removeURLFromCache(executionContext, xhrReplayData->url()); | 837 memoryCache()->removeURLFromCache(executionContext, xhrReplayData->url()); |
842 | 838 |
843 xhr->open(xhrReplayData->method(), xhrReplayData->url(), xhrReplayData->asyn c(), IGNORE_EXCEPTION); | 839 xhr->open(xhrReplayData->method(), xhrReplayData->url(), xhrReplayData->asyn c(), IGNORE_EXCEPTION); |
844 HTTPHeaderMap::const_iterator end = xhrReplayData->headers().end(); | 840 for (const auto& it : xhrReplayData->headers()) |
845 for (HTTPHeaderMap::const_iterator it = xhrReplayData->headers().begin(); it != end; ++it) | 841 xhr->setRequestHeader(it.key, it.value, IGNORE_EXCEPTION); |
846 xhr->setRequestHeader(it->key, it->value, IGNORE_EXCEPTION); | |
847 xhr->sendForInspectorXHRReplay(xhrReplayData->formData(), IGNORE_EXCEPTION); | 842 xhr->sendForInspectorXHRReplay(xhrReplayData->formData(), IGNORE_EXCEPTION); |
848 | 843 |
849 m_replayXHRs.add(xhr); | 844 m_replayXHRs.add(xhr); |
850 } | 845 } |
851 | 846 |
852 void InspectorResourceAgent::canClearBrowserCache(ErrorString*, bool* result) | 847 void InspectorResourceAgent::canClearBrowserCache(ErrorString*, bool* result) |
853 { | 848 { |
854 *result = true; | 849 *result = true; |
855 } | 850 } |
856 | 851 |
(...skipping 28 matching lines...) Expand all Loading... | |
885 if (!document) { | 880 if (!document) { |
886 *errorString = "No Document instance for the specified frame"; | 881 *errorString = "No Document instance for the specified frame"; |
887 return; | 882 return; |
888 } | 883 } |
889 | 884 |
890 ResourceRequest request(url); | 885 ResourceRequest request(url); |
891 request.setHTTPMethod("GET"); | 886 request.setHTTPMethod("GET"); |
892 request.setRequestContext(blink::WebURLRequest::RequestContextInternal); | 887 request.setRequestContext(blink::WebURLRequest::RequestContextInternal); |
893 request.setCachePolicy(ReloadIgnoringCacheData); | 888 request.setCachePolicy(ReloadIgnoringCacheData); |
894 if (requestHeaders) { | 889 if (requestHeaders) { |
895 for (JSONObject::iterator it = (*requestHeaders)->begin(); it != (*reque stHeaders)->end(); ++it) { | 890 for (auto it : *(*requestHeaders)) { |
896 String value; | 891 String value; |
897 bool success = it->value->asString(&value); | 892 bool success = it.value->asString(&value); |
898 if (!success) { | 893 if (!success) { |
899 *errorString = "Request header \"" + it->key + "\" value is not a string"; | 894 *errorString = "Request header \"" + it.key + "\" value is not a string"; |
900 return; | 895 return; |
901 } | 896 } |
902 request.addHTTPHeaderField(AtomicString(it->key), AtomicString(value )); | 897 request.addHTTPHeaderField(AtomicString(it.key), AtomicString(value) ); |
903 } | 898 } |
904 } | 899 } |
905 request.addHTTPHeaderField(kDevToolsRequestInitiator, "frontend"); | 900 request.addHTTPHeaderField(kDevToolsRequestInitiator, "frontend"); |
906 | 901 |
907 ThreadableLoaderOptions options; | 902 ThreadableLoaderOptions options; |
908 options.crossOriginRequestPolicy = AllowCrossOriginRequests; | 903 options.crossOriginRequestPolicy = AllowCrossOriginRequests; |
909 | 904 |
910 ResourceLoaderOptions resourceLoaderOptions; | 905 ResourceLoaderOptions resourceLoaderOptions; |
911 resourceLoaderOptions.allowCredentials = AllowStoredCredentials; | 906 resourceLoaderOptions.allowCredentials = AllowStoredCredentials; |
912 | 907 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
953 { | 948 { |
954 // First try to fetch content from the cached resource. | 949 // First try to fetch content from the cached resource. |
955 Resource* cachedResource = document->fetcher()->cachedResource(url); | 950 Resource* cachedResource = document->fetcher()->cachedResource(url); |
956 if (!cachedResource) | 951 if (!cachedResource) |
957 cachedResource = memoryCache()->resourceForURL(url, document->fetcher()- >getCacheIdentifier()); | 952 cachedResource = memoryCache()->resourceForURL(url, document->fetcher()- >getCacheIdentifier()); |
958 if (cachedResource && InspectorPageAgent::cachedResourceContent(cachedResour ce, content, base64Encoded)) | 953 if (cachedResource && InspectorPageAgent::cachedResourceContent(cachedResour ce, content, base64Encoded)) |
959 return true; | 954 return true; |
960 | 955 |
961 // Then fall back to resource data. | 956 // Then fall back to resource data. |
962 Vector<NetworkResourcesData::ResourceData*> resources = m_resourcesData->res ources(); | 957 Vector<NetworkResourcesData::ResourceData*> resources = m_resourcesData->res ources(); |
963 for (Vector<NetworkResourcesData::ResourceData*>::iterator it = resources.be gin(); it != resources.end(); ++it) { | 958 for (auto it : resources) { |
pfeldman
2014/12/16 16:52:10
while you are here, auto it : m_resourcesData->res
zhaoze.zhou
2014/12/16 18:56:40
Done.
| |
964 if ((*it)->url() == url) { | 959 if (it->url() == url) { |
965 *content = (*it)->content(); | 960 *content = it->content(); |
966 *base64Encoded = (*it)->base64Encoded(); | 961 *base64Encoded = it->base64Encoded(); |
967 return true; | 962 return true; |
968 } | 963 } |
969 } | 964 } |
970 return false; | 965 return false; |
971 } | 966 } |
972 | 967 |
973 void InspectorResourceAgent::removeFinishedReplayXHRFired(Timer<InspectorResourc eAgent>*) | 968 void InspectorResourceAgent::removeFinishedReplayXHRFired(Timer<InspectorResourc eAgent>*) |
974 { | 969 { |
975 m_replayXHRsToBeDeleted.clear(); | 970 m_replayXHRsToBeDeleted.clear(); |
976 } | 971 } |
977 | 972 |
978 InspectorResourceAgent::InspectorResourceAgent(InspectorPageAgent* pageAgent) | 973 InspectorResourceAgent::InspectorResourceAgent(InspectorPageAgent* pageAgent) |
979 : InspectorBaseAgent<InspectorResourceAgent>("Network") | 974 : InspectorBaseAgent<InspectorResourceAgent>("Network") |
980 , m_pageAgent(pageAgent) | 975 , m_pageAgent(pageAgent) |
981 , m_frontend(0) | 976 , m_frontend(0) |
982 , m_resourcesData(adoptPtr(new NetworkResourcesData())) | 977 , m_resourcesData(adoptPtr(new NetworkResourcesData())) |
983 , m_isRecalculatingStyle(false) | 978 , m_isRecalculatingStyle(false) |
984 , m_removeFinishedReplayXHRTimer(this, &InspectorResourceAgent::removeFinish edReplayXHRFired) | 979 , m_removeFinishedReplayXHRTimer(this, &InspectorResourceAgent::removeFinish edReplayXHRFired) |
985 { | 980 { |
986 } | 981 } |
987 | 982 |
988 bool InspectorResourceAgent::shouldForceCORSPreflight() | 983 bool InspectorResourceAgent::shouldForceCORSPreflight() |
989 { | 984 { |
990 return m_state->getBoolean(ResourceAgentState::cacheDisabled); | 985 return m_state->getBoolean(ResourceAgentState::cacheDisabled); |
991 } | 986 } |
992 | 987 |
993 } // namespace blink | 988 } // namespace blink |
OLD | NEW |