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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 } | 200 } |
201 | 201 |
202 RefPtr<BlobDataHandle> blob_; | 202 RefPtr<BlobDataHandle> blob_; |
203 String mime_type_; | 203 String mime_type_; |
204 String text_encoding_name_; | 204 String text_encoding_name_; |
205 std::unique_ptr<GetResponseBodyCallback> callback_; | 205 std::unique_ptr<GetResponseBodyCallback> callback_; |
206 std::unique_ptr<FileReaderLoader> loader_; | 206 std::unique_ptr<FileReaderLoader> loader_; |
207 RefPtr<SharedBuffer> raw_data_; | 207 RefPtr<SharedBuffer> raw_data_; |
208 }; | 208 }; |
209 | 209 |
210 KURL UrlWithoutFragment(const KURL& url) { | |
211 KURL result = url; | |
212 result.RemoveFragmentIdentifier(); | |
213 return result; | |
214 } | |
215 | |
216 String MixedContentTypeForContextType(WebMixedContentContextType context_type) { | 210 String MixedContentTypeForContextType(WebMixedContentContextType context_type) { |
217 switch (context_type) { | 211 switch (context_type) { |
218 case WebMixedContentContextType::kNotMixedContent: | 212 case WebMixedContentContextType::kNotMixedContent: |
219 return protocol::Security::MixedContentTypeEnum::None; | 213 return protocol::Security::MixedContentTypeEnum::None; |
220 case WebMixedContentContextType::kBlockable: | 214 case WebMixedContentContextType::kBlockable: |
221 return protocol::Security::MixedContentTypeEnum::Blockable; | 215 return protocol::Security::MixedContentTypeEnum::Blockable; |
222 case WebMixedContentContextType::kOptionallyBlockable: | 216 case WebMixedContentContextType::kOptionallyBlockable: |
223 case WebMixedContentContextType::kShouldBeBlockable: | 217 case WebMixedContentContextType::kShouldBeBlockable: |
224 return protocol::Security::MixedContentTypeEnum::OptionallyBlockable; | 218 return protocol::Security::MixedContentTypeEnum::OptionallyBlockable; |
225 } | 219 } |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 .setSendEnd(timing.CalculateMillisecondDelta(timing.SendEnd())) | 347 .setSendEnd(timing.CalculateMillisecondDelta(timing.SendEnd())) |
354 .setReceiveHeadersEnd( | 348 .setReceiveHeadersEnd( |
355 timing.CalculateMillisecondDelta(timing.ReceiveHeadersEnd())) | 349 timing.CalculateMillisecondDelta(timing.ReceiveHeadersEnd())) |
356 .setPushStart(timing.PushStart()) | 350 .setPushStart(timing.PushStart()) |
357 .setPushEnd(timing.PushEnd()) | 351 .setPushEnd(timing.PushEnd()) |
358 .build(); | 352 .build(); |
359 } | 353 } |
360 | 354 |
361 static std::unique_ptr<protocol::Network::Request> | 355 static std::unique_ptr<protocol::Network::Request> |
362 BuildObjectForResourceRequest(const ResourceRequest& request) { | 356 BuildObjectForResourceRequest(const ResourceRequest& request) { |
| 357 KURL nofragment_request_url(request.Url()); |
| 358 nofragment_request_url.RemoveFragmentIdentifier(); |
363 std::unique_ptr<protocol::Network::Request> request_object = | 359 std::unique_ptr<protocol::Network::Request> request_object = |
364 protocol::Network::Request::create() | 360 protocol::Network::Request::create() |
365 .setUrl(UrlWithoutFragment(request.Url()).GetString()) | 361 .setUrl(nofragment_request_url.GetString()) |
366 .setMethod(request.HttpMethod()) | 362 .setMethod(request.HttpMethod()) |
367 .setHeaders(BuildObjectForHeaders(request.HttpHeaderFields())) | 363 .setHeaders(BuildObjectForHeaders(request.HttpHeaderFields())) |
368 .setInitialPriority(ResourcePriorityJSON(request.Priority())) | 364 .setInitialPriority(ResourcePriorityJSON(request.Priority())) |
369 .setReferrerPolicy(GetReferrerPolicy(request.GetReferrerPolicy())) | 365 .setReferrerPolicy(GetReferrerPolicy(request.GetReferrerPolicy())) |
370 .build(); | 366 .build(); |
371 if (request.HttpBody() && !request.HttpBody()->IsEmpty()) { | 367 if (request.HttpBody() && !request.HttpBody()->IsEmpty()) { |
372 Vector<char> bytes; | 368 Vector<char> bytes; |
373 request.HttpBody()->Flatten(bytes); | 369 request.HttpBody()->Flatten(bytes); |
374 request_object->setPostData( | 370 request_object->setPostData( |
375 String::FromUTF8WithLatin1Fallback(bytes.data(), bytes.size())); | 371 String::FromUTF8WithLatin1Fallback(bytes.data(), bytes.size())); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 } | 419 } |
424 | 420 |
425 // Use mime type from cached resource in case the one in response is empty. | 421 // Use mime type from cached resource in case the one in response is empty. |
426 String mime_type = response.MimeType(); | 422 String mime_type = response.MimeType(); |
427 if (mime_type.IsEmpty() && cached_resource) | 423 if (mime_type.IsEmpty() && cached_resource) |
428 mime_type = cached_resource->GetResponse().MimeType(); | 424 mime_type = cached_resource->GetResponse().MimeType(); |
429 | 425 |
430 if (is_empty) | 426 if (is_empty) |
431 *is_empty = !status && mime_type.IsEmpty() && !headers_map.size(); | 427 *is_empty = !status && mime_type.IsEmpty() && !headers_map.size(); |
432 | 428 |
| 429 KURL nofragment_response_url(response.Url()); |
| 430 nofragment_response_url.RemoveFragmentIdentifier(); |
433 std::unique_ptr<protocol::Network::Response> response_object = | 431 std::unique_ptr<protocol::Network::Response> response_object = |
434 protocol::Network::Response::create() | 432 protocol::Network::Response::create() |
435 .setUrl(UrlWithoutFragment(response.Url()).GetString()) | 433 .setUrl(nofragment_response_url.GetString()) |
436 .setStatus(status) | 434 .setStatus(status) |
437 .setStatusText(status_text) | 435 .setStatusText(status_text) |
438 .setHeaders(BuildObjectForHeaders(headers_map)) | 436 .setHeaders(BuildObjectForHeaders(headers_map)) |
439 .setMimeType(mime_type) | 437 .setMimeType(mime_type) |
440 .setConnectionReused(response.ConnectionReused()) | 438 .setConnectionReused(response.ConnectionReused()) |
441 .setConnectionId(response.ConnectionID()) | 439 .setConnectionId(response.ConnectionID()) |
442 .setEncodedDataLength(encoded_data_length) | 440 .setEncodedDataLength(encoded_data_length) |
443 .setSecurityState(security_state) | 441 .setSecurityState(security_state) |
444 .build(); | 442 .build(); |
445 | 443 |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 MixedContentChecker::ContextTypeForInspector(loader->GetFrame(), | 650 MixedContentChecker::ContextTypeForInspector(loader->GetFrame(), |
653 request))); | 651 request))); |
654 } | 652 } |
655 | 653 |
656 request_info->setReferrerPolicy( | 654 request_info->setReferrerPolicy( |
657 GetReferrerPolicy(request.GetReferrerPolicy())); | 655 GetReferrerPolicy(request.GetReferrerPolicy())); |
658 if (initiator_info.is_link_preload) | 656 if (initiator_info.is_link_preload) |
659 request_info->setIsLinkPreload(true); | 657 request_info->setIsLinkPreload(true); |
660 | 658 |
661 String resource_type = InspectorPageAgent::ResourceTypeJson(type); | 659 String resource_type = InspectorPageAgent::ResourceTypeJson(type); |
662 String documentURL = | 660 KURL nofragment_document_url(loader ? loader->Url() |
663 loader ? UrlWithoutFragment(loader->Url()).GetString() | 661 : execution_context->Url()); |
664 : UrlWithoutFragment(execution_context->Url()).GetString(); | 662 nofragment_document_url.RemoveFragmentIdentifier(); |
| 663 String documentURL = nofragment_document_url.GetString(); |
665 Maybe<String> maybe_frame_id; | 664 Maybe<String> maybe_frame_id; |
666 if (!frame_id.IsEmpty()) | 665 if (!frame_id.IsEmpty()) |
667 maybe_frame_id = frame_id; | 666 maybe_frame_id = frame_id; |
668 GetFrontend()->requestWillBeSent( | 667 GetFrontend()->requestWillBeSent( |
669 request_id, loader_id, documentURL, std::move(request_info), | 668 request_id, loader_id, documentURL, std::move(request_info), |
670 MonotonicallyIncreasingTime(), CurrentTime(), std::move(initiator_object), | 669 MonotonicallyIncreasingTime(), CurrentTime(), std::move(initiator_object), |
671 BuildObjectForResourceResponse(redirect_response), resource_type, | 670 BuildObjectForResourceResponse(redirect_response), resource_type, |
672 std::move(maybe_frame_id)); | 671 std::move(maybe_frame_id)); |
673 if (pending_xhr_replay_data_ && !pending_xhr_replay_data_->Async()) | 672 if (pending_xhr_replay_data_ && !pending_xhr_replay_data_->Async()) |
674 GetFrontend()->flush(); | 673 GetFrontend()->flush(); |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 const AtomicString& method, | 939 const AtomicString& method, |
941 const KURL& url, | 940 const KURL& url, |
942 bool async, | 941 bool async, |
943 PassRefPtr<EncodedFormData> form_data, | 942 PassRefPtr<EncodedFormData> form_data, |
944 const HTTPHeaderMap& headers, | 943 const HTTPHeaderMap& headers, |
945 bool include_credentials) { | 944 bool include_credentials) { |
946 DCHECK(xhr); | 945 DCHECK(xhr); |
947 DCHECK(!pending_request_); | 946 DCHECK(!pending_request_); |
948 pending_request_ = client; | 947 pending_request_ = client; |
949 pending_request_type_ = InspectorPageAgent::kXHRResource; | 948 pending_request_type_ = InspectorPageAgent::kXHRResource; |
950 pending_xhr_replay_data_ = XHRReplayData::Create( | 949 KURL nofragment_url(url); |
951 xhr->GetExecutionContext(), method, UrlWithoutFragment(url), async, | 950 nofragment_url.RemoveFragmentIdentifier(); |
952 form_data.Get(), include_credentials); | 951 pending_xhr_replay_data_ = |
| 952 XHRReplayData::Create(xhr->GetExecutionContext(), method, nofragment_url, |
| 953 async, form_data.Get(), include_credentials); |
953 for (const auto& header : headers) | 954 for (const auto& header : headers) |
954 pending_xhr_replay_data_->AddHeader(header.key, header.value); | 955 pending_xhr_replay_data_->AddHeader(header.key, header.value); |
955 } | 956 } |
956 | 957 |
957 void InspectorNetworkAgent::DelayedRemoveReplayXHR(XMLHttpRequest* xhr) { | 958 void InspectorNetworkAgent::DelayedRemoveReplayXHR(XMLHttpRequest* xhr) { |
958 if (!replay_xhrs_.Contains(xhr)) | 959 if (!replay_xhrs_.Contains(xhr)) |
959 return; | 960 return; |
960 replay_xhrs_to_be_deleted_.insert(xhr); | 961 replay_xhrs_to_be_deleted_.insert(xhr); |
961 replay_xhrs_.erase(xhr); | 962 replay_xhrs_.erase(xhr); |
962 remove_finished_replay_xhr_timer_.StartOneShot(0, BLINK_FROM_HERE); | 963 remove_finished_replay_xhr_timer_.StartOneShot(0, BLINK_FROM_HERE); |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 } | 1096 } |
1096 | 1097 |
1097 while (document && !document->GetScriptableDocumentParser()) | 1098 while (document && !document->GetScriptableDocumentParser()) |
1098 document = document->LocalOwner() ? document->LocalOwner()->ownerDocument() | 1099 document = document->LocalOwner() ? document->LocalOwner()->ownerDocument() |
1099 : nullptr; | 1100 : nullptr; |
1100 if (document && document->GetScriptableDocumentParser()) { | 1101 if (document && document->GetScriptableDocumentParser()) { |
1101 std::unique_ptr<protocol::Network::Initiator> initiator_object = | 1102 std::unique_ptr<protocol::Network::Initiator> initiator_object = |
1102 protocol::Network::Initiator::create() | 1103 protocol::Network::Initiator::create() |
1103 .setType(protocol::Network::Initiator::TypeEnum::Parser) | 1104 .setType(protocol::Network::Initiator::TypeEnum::Parser) |
1104 .build(); | 1105 .build(); |
1105 initiator_object->setUrl(UrlWithoutFragment(document->Url()).GetString()); | 1106 KURL nofragment_document_url(document->Url()); |
| 1107 nofragment_document_url.RemoveFragmentIdentifier(); |
| 1108 initiator_object->setUrl(nofragment_document_url.GetString()); |
1106 if (TextPosition::BelowRangePosition() != initiator_info.position) | 1109 if (TextPosition::BelowRangePosition() != initiator_info.position) |
1107 initiator_object->setLineNumber( | 1110 initiator_object->setLineNumber( |
1108 initiator_info.position.line_.ZeroBasedInt()); | 1111 initiator_info.position.line_.ZeroBasedInt()); |
1109 else | 1112 else |
1110 initiator_object->setLineNumber( | 1113 initiator_object->setLineNumber( |
1111 document->GetScriptableDocumentParser()->LineNumber().ZeroBasedInt()); | 1114 document->GetScriptableDocumentParser()->LineNumber().ZeroBasedInt()); |
1112 return initiator_object; | 1115 return initiator_object; |
1113 } | 1116 } |
1114 | 1117 |
1115 return protocol::Network::Initiator::create() | 1118 return protocol::Network::Initiator::create() |
1116 .setType(protocol::Network::Initiator::TypeEnum::Other) | 1119 .setType(protocol::Network::Initiator::TypeEnum::Other) |
1117 .build(); | 1120 .build(); |
1118 } | 1121 } |
1119 | 1122 |
1120 void InspectorNetworkAgent::DidCreateWebSocket(Document* document, | 1123 void InspectorNetworkAgent::DidCreateWebSocket(Document* document, |
1121 unsigned long identifier, | 1124 unsigned long identifier, |
1122 const KURL& request_url, | 1125 const KURL& request_url, |
1123 const String&) { | 1126 const String&) { |
1124 std::unique_ptr<v8_inspector::protocol::Runtime::API::StackTrace> | 1127 std::unique_ptr<v8_inspector::protocol::Runtime::API::StackTrace> |
1125 current_stack_trace = | 1128 current_stack_trace = |
1126 SourceLocation::Capture(document)->BuildInspectorObject(); | 1129 SourceLocation::Capture(document)->BuildInspectorObject(); |
| 1130 KURL nofragment_request_url(request_url); |
| 1131 nofragment_request_url.RemoveFragmentIdentifier(); |
1127 if (!current_stack_trace) { | 1132 if (!current_stack_trace) { |
1128 GetFrontend()->webSocketCreated( | 1133 GetFrontend()->webSocketCreated(IdentifiersFactory::RequestId(identifier), |
1129 IdentifiersFactory::RequestId(identifier), | 1134 nofragment_request_url.GetString()); |
1130 UrlWithoutFragment(request_url).GetString()); | |
1131 return; | 1135 return; |
1132 } | 1136 } |
1133 | 1137 |
1134 std::unique_ptr<protocol::Network::Initiator> initiator_object = | 1138 std::unique_ptr<protocol::Network::Initiator> initiator_object = |
1135 protocol::Network::Initiator::create() | 1139 protocol::Network::Initiator::create() |
1136 .setType(protocol::Network::Initiator::TypeEnum::Script) | 1140 .setType(protocol::Network::Initiator::TypeEnum::Script) |
1137 .build(); | 1141 .build(); |
1138 initiator_object->setStack(std::move(current_stack_trace)); | 1142 initiator_object->setStack(std::move(current_stack_trace)); |
1139 GetFrontend()->webSocketCreated(IdentifiersFactory::RequestId(identifier), | 1143 GetFrontend()->webSocketCreated(IdentifiersFactory::RequestId(identifier), |
1140 UrlWithoutFragment(request_url).GetString(), | 1144 nofragment_request_url.GetString(), |
1141 std::move(initiator_object)); | 1145 std::move(initiator_object)); |
1142 } | 1146 } |
1143 | 1147 |
1144 void InspectorNetworkAgent::WillSendWebSocketHandshakeRequest( | 1148 void InspectorNetworkAgent::WillSendWebSocketHandshakeRequest( |
1145 Document*, | 1149 Document*, |
1146 unsigned long identifier, | 1150 unsigned long identifier, |
1147 const WebSocketHandshakeRequest* request) { | 1151 const WebSocketHandshakeRequest* request) { |
1148 DCHECK(request); | 1152 DCHECK(request); |
1149 std::unique_ptr<protocol::Network::WebSocketRequest> request_object = | 1153 std::unique_ptr<protocol::Network::WebSocketRequest> request_object = |
1150 protocol::Network::WebSocketRequest::create() | 1154 protocol::Network::WebSocketRequest::create() |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1589 DCHECK((IsMainThread() && inspected_frames_ && !worker_global_scope_) || | 1593 DCHECK((IsMainThread() && inspected_frames_ && !worker_global_scope_) || |
1590 (!IsMainThread() && !inspected_frames_ && worker_global_scope_)); | 1594 (!IsMainThread() && !inspected_frames_ && worker_global_scope_)); |
1591 } | 1595 } |
1592 | 1596 |
1593 void InspectorNetworkAgent::ShouldForceCORSPreflight(bool* result) { | 1597 void InspectorNetworkAgent::ShouldForceCORSPreflight(bool* result) { |
1594 if (state_->booleanProperty(NetworkAgentState::kCacheDisabled, false)) | 1598 if (state_->booleanProperty(NetworkAgentState::kCacheDisabled, false)) |
1595 *result = true; | 1599 *result = true; |
1596 } | 1600 } |
1597 | 1601 |
1598 } // namespace blink | 1602 } // namespace blink |
OLD | NEW |