OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 #include "platform/loader/fetch/Resource.h" | 72 #include "platform/loader/fetch/Resource.h" |
73 #include "platform/loader/fetch/ResourceLoadPriority.h" | 73 #include "platform/loader/fetch/ResourceLoadPriority.h" |
74 #include "platform/loader/fetch/ResourceLoadingLog.h" | 74 #include "platform/loader/fetch/ResourceLoadingLog.h" |
75 #include "platform/loader/fetch/ResourceTimingInfo.h" | 75 #include "platform/loader/fetch/ResourceTimingInfo.h" |
76 #include "platform/loader/fetch/UniqueIdentifier.h" | 76 #include "platform/loader/fetch/UniqueIdentifier.h" |
77 #include "platform/mhtml/MHTMLArchive.h" | 77 #include "platform/mhtml/MHTMLArchive.h" |
78 #include "platform/network/NetworkStateNotifier.h" | 78 #include "platform/network/NetworkStateNotifier.h" |
79 #include "platform/network/NetworkUtils.h" | 79 #include "platform/network/NetworkUtils.h" |
80 #include "platform/weborigin/SchemeRegistry.h" | 80 #include "platform/weborigin/SchemeRegistry.h" |
81 #include "platform/wtf/Vector.h" | 81 #include "platform/wtf/Vector.h" |
| 82 #include "public/platform/Platform.h" |
82 #include "public/platform/WebCachePolicy.h" | 83 #include "public/platform/WebCachePolicy.h" |
83 #include "public/platform/WebInsecureRequestPolicy.h" | 84 #include "public/platform/WebInsecureRequestPolicy.h" |
84 #include "public/platform/WebViewScheduler.h" | 85 #include "public/platform/WebViewScheduler.h" |
85 #include "public/platform/modules/serviceworker/WebServiceWorkerNetworkProvider.
h" | 86 #include "public/platform/modules/serviceworker/WebServiceWorkerNetworkProvider.
h" |
86 | 87 |
87 namespace blink { | 88 namespace blink { |
88 | 89 |
89 namespace { | 90 namespace { |
90 | 91 |
91 void EmitWarningForDocWriteScripts(const String& url, Document& document) { | 92 void EmitWarningForDocWriteScripts(const String& url, Document& document) { |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 unsigned long identifier, | 449 unsigned long identifier, |
449 ResourceRequest& request, | 450 ResourceRequest& request, |
450 const ResourceResponse& redirect_response, | 451 const ResourceResponse& redirect_response, |
451 const FetchInitiatorInfo& initiator_info) { | 452 const FetchInitiatorInfo& initiator_info) { |
452 if (redirect_response.IsNull()) { | 453 if (redirect_response.IsNull()) { |
453 // Progress doesn't care about redirects, only notify it when an | 454 // Progress doesn't care about redirects, only notify it when an |
454 // initial request is sent. | 455 // initial request is sent. |
455 GetFrame()->Loader().Progress().WillStartLoading(identifier, | 456 GetFrame()->Loader().Progress().WillStartLoading(identifier, |
456 request.Priority()); | 457 request.Priority()); |
457 } | 458 } |
458 probe::willSendRequest(GetFrame(), identifier, MasterDocumentLoader(), | 459 probe::willSendRequest(GetFrame()->GetDocument(), identifier, |
459 request, redirect_response, initiator_info); | 460 MasterDocumentLoader(), request, redirect_response, |
| 461 initiator_info); |
460 if (GetFrame()->FrameScheduler()) | 462 if (GetFrame()->FrameScheduler()) |
461 GetFrame()->FrameScheduler()->DidStartLoading(identifier); | 463 GetFrame()->FrameScheduler()->DidStartLoading(identifier); |
462 } | 464 } |
463 | 465 |
464 void FrameFetchContext::DispatchDidReceiveResponse( | 466 void FrameFetchContext::DispatchDidReceiveResponse( |
465 unsigned long identifier, | 467 unsigned long identifier, |
466 const ResourceResponse& response, | 468 const ResourceResponse& response, |
467 WebURLRequest::FrameType frame_type, | 469 WebURLRequest::FrameType frame_type, |
468 WebURLRequest::RequestContext request_context, | 470 WebURLRequest::RequestContext request_context, |
469 Resource* resource, | 471 Resource* resource, |
(...skipping 28 matching lines...) Expand all Loading... |
498 resource_loading_policy, LinkLoader::kLoadAll, nullptr); | 500 resource_loading_policy, LinkLoader::kLoadAll, nullptr); |
499 | 501 |
500 if (response.HasMajorCertificateErrors()) { | 502 if (response.HasMajorCertificateErrors()) { |
501 MixedContentChecker::HandleCertificateError(GetFrame(), response, | 503 MixedContentChecker::HandleCertificateError(GetFrame(), response, |
502 frame_type, request_context); | 504 frame_type, request_context); |
503 } | 505 } |
504 | 506 |
505 GetFrame()->Loader().Progress().IncrementProgress(identifier, response); | 507 GetFrame()->Loader().Progress().IncrementProgress(identifier, response); |
506 GetLocalFrameClient()->DispatchDidReceiveResponse(response); | 508 GetLocalFrameClient()->DispatchDidReceiveResponse(response); |
507 DocumentLoader* document_loader = MasterDocumentLoader(); | 509 DocumentLoader* document_loader = MasterDocumentLoader(); |
508 probe::didReceiveResourceResponse(GetFrame(), identifier, document_loader, | 510 probe::didReceiveResourceResponse(GetFrame()->GetDocument(), identifier, |
509 response, resource); | 511 document_loader, response, resource); |
510 // It is essential that inspector gets resource response BEFORE console. | 512 // It is essential that inspector gets resource response BEFORE console. |
511 GetFrame()->Console().ReportResourceResponseReceived(document_loader, | 513 GetFrame()->Console().ReportResourceResponseReceived(document_loader, |
512 identifier, response); | 514 identifier, response); |
513 } | 515 } |
514 | 516 |
515 void FrameFetchContext::DispatchDidReceiveData(unsigned long identifier, | 517 void FrameFetchContext::DispatchDidReceiveData(unsigned long identifier, |
516 const char* data, | 518 const char* data, |
517 int data_length) { | 519 int data_length) { |
518 GetFrame()->Loader().Progress().IncrementProgress(identifier, data_length); | 520 GetFrame()->Loader().Progress().IncrementProgress(identifier, data_length); |
519 probe::didReceiveData(GetFrame(), identifier, data, data_length); | 521 probe::didReceiveData(GetFrame()->GetDocument(), identifier, |
| 522 MasterDocumentLoader(), data, data_length); |
520 } | 523 } |
521 | 524 |
522 void FrameFetchContext::DispatchDidReceiveEncodedData(unsigned long identifier, | 525 void FrameFetchContext::DispatchDidReceiveEncodedData(unsigned long identifier, |
523 int encoded_data_length) { | 526 int encoded_data_length) { |
524 probe::didReceiveEncodedDataLength(GetFrame(), identifier, | 527 probe::didReceiveEncodedDataLength(GetFrame()->GetDocument(), identifier, |
525 encoded_data_length); | 528 encoded_data_length); |
526 } | 529 } |
527 | 530 |
528 void FrameFetchContext::DispatchDidDownloadData(unsigned long identifier, | 531 void FrameFetchContext::DispatchDidDownloadData(unsigned long identifier, |
529 int data_length, | 532 int data_length, |
530 int encoded_data_length) { | 533 int encoded_data_length) { |
531 GetFrame()->Loader().Progress().IncrementProgress(identifier, data_length); | 534 GetFrame()->Loader().Progress().IncrementProgress(identifier, data_length); |
532 probe::didReceiveData(GetFrame(), identifier, 0, data_length); | 535 probe::didReceiveData(GetFrame()->GetDocument(), identifier, |
533 probe::didReceiveEncodedDataLength(GetFrame(), identifier, | 536 MasterDocumentLoader(), 0, data_length); |
| 537 probe::didReceiveEncodedDataLength(GetFrame()->GetDocument(), identifier, |
534 encoded_data_length); | 538 encoded_data_length); |
535 } | 539 } |
536 | 540 |
537 void FrameFetchContext::DispatchDidFinishLoading(unsigned long identifier, | 541 void FrameFetchContext::DispatchDidFinishLoading(unsigned long identifier, |
538 double finish_time, | 542 double finish_time, |
539 int64_t encoded_data_length, | 543 int64_t encoded_data_length, |
540 int64_t decoded_body_length) { | 544 int64_t decoded_body_length) { |
541 GetFrame()->Loader().Progress().CompleteProgress(identifier); | 545 GetFrame()->Loader().Progress().CompleteProgress(identifier); |
542 probe::didFinishLoading(GetFrame(), identifier, finish_time, | 546 probe::didFinishLoading(GetFrame()->GetDocument(), identifier, |
| 547 MasterDocumentLoader(), finish_time, |
543 encoded_data_length, decoded_body_length); | 548 encoded_data_length, decoded_body_length); |
544 if (GetFrame()->FrameScheduler()) | 549 if (GetFrame()->FrameScheduler()) |
545 GetFrame()->FrameScheduler()->DidStopLoading(identifier); | 550 GetFrame()->FrameScheduler()->DidStopLoading(identifier); |
546 } | 551 } |
547 | 552 |
548 void FrameFetchContext::DispatchDidFail(unsigned long identifier, | 553 void FrameFetchContext::DispatchDidFail(unsigned long identifier, |
549 const ResourceError& error, | 554 const ResourceError& error, |
550 int64_t encoded_data_length, | 555 int64_t encoded_data_length, |
551 bool is_internal_request) { | 556 bool is_internal_request) { |
552 GetFrame()->Loader().Progress().CompleteProgress(identifier); | 557 GetFrame()->Loader().Progress().CompleteProgress(identifier); |
553 probe::didFailLoading(GetFrame(), identifier, error); | 558 probe::didFailLoading(GetFrame()->GetDocument(), identifier, error); |
554 // Notification to FrameConsole should come AFTER InspectorInstrumentation | 559 // Notification to FrameConsole should come AFTER InspectorInstrumentation |
555 // call, DevTools front-end relies on this. | 560 // call, DevTools front-end relies on this. |
556 if (!is_internal_request) | 561 if (!is_internal_request) |
557 GetFrame()->Console().DidFailLoading(identifier, error); | 562 GetFrame()->Console().DidFailLoading(identifier, error); |
558 if (GetFrame()->FrameScheduler()) | 563 if (GetFrame()->FrameScheduler()) |
559 GetFrame()->FrameScheduler()->DidStopLoading(identifier); | 564 GetFrame()->FrameScheduler()->DidStopLoading(identifier); |
560 } | 565 } |
561 | 566 |
562 void FrameFetchContext::DispatchDidLoadResourceFromMemoryCache( | 567 void FrameFetchContext::DispatchDidLoadResourceFromMemoryCache( |
563 unsigned long identifier, | 568 unsigned long identifier, |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 const ResourceRequest& resource_request, | 646 const ResourceRequest& resource_request, |
642 const KURL& url, | 647 const KURL& url, |
643 const ResourceLoaderOptions& options, | 648 const ResourceLoaderOptions& options, |
644 SecurityViolationReportingPolicy reporting_policy, | 649 SecurityViolationReportingPolicy reporting_policy, |
645 FetchParameters::OriginRestriction origin_restriction) const { | 650 FetchParameters::OriginRestriction origin_restriction) const { |
646 ResourceRequestBlockedReason blocked_reason = CanRequestInternal( | 651 ResourceRequestBlockedReason blocked_reason = CanRequestInternal( |
647 type, resource_request, url, options, reporting_policy, | 652 type, resource_request, url, options, reporting_policy, |
648 origin_restriction, resource_request.GetRedirectStatus()); | 653 origin_restriction, resource_request.GetRedirectStatus()); |
649 if (blocked_reason != ResourceRequestBlockedReason::kNone && | 654 if (blocked_reason != ResourceRequestBlockedReason::kNone && |
650 reporting_policy == SecurityViolationReportingPolicy::kReport) { | 655 reporting_policy == SecurityViolationReportingPolicy::kReport) { |
651 probe::didBlockRequest(GetFrame(), resource_request, MasterDocumentLoader(), | 656 probe::didBlockRequest(GetDocument(), resource_request, |
652 options.initiator_info, blocked_reason); | 657 MasterDocumentLoader(), options.initiator_info, |
| 658 blocked_reason); |
653 } | 659 } |
654 return blocked_reason; | 660 return blocked_reason; |
655 } | 661 } |
656 | 662 |
657 ResourceRequestBlockedReason FrameFetchContext::AllowResponse( | 663 ResourceRequestBlockedReason FrameFetchContext::AllowResponse( |
658 Resource::Type type, | 664 Resource::Type type, |
659 const ResourceRequest& resource_request, | 665 const ResourceRequest& resource_request, |
660 const KURL& url, | 666 const KURL& url, |
661 const ResourceLoaderOptions& options) const { | 667 const ResourceLoaderOptions& options) const { |
662 ResourceRequestBlockedReason blocked_reason = | 668 ResourceRequestBlockedReason blocked_reason = |
663 CanRequestInternal(type, resource_request, url, options, | 669 CanRequestInternal(type, resource_request, url, options, |
664 SecurityViolationReportingPolicy::kReport, | 670 SecurityViolationReportingPolicy::kReport, |
665 FetchParameters::kUseDefaultOriginRestrictionForType, | 671 FetchParameters::kUseDefaultOriginRestrictionForType, |
666 RedirectStatus::kFollowedRedirect); | 672 RedirectStatus::kFollowedRedirect); |
667 if (blocked_reason != ResourceRequestBlockedReason::kNone) { | 673 if (blocked_reason != ResourceRequestBlockedReason::kNone) { |
668 probe::didBlockRequest(GetFrame(), resource_request, MasterDocumentLoader(), | 674 probe::didBlockRequest(GetDocument(), resource_request, |
669 options.initiator_info, blocked_reason); | 675 MasterDocumentLoader(), options.initiator_info, |
| 676 blocked_reason); |
670 } | 677 } |
671 return blocked_reason; | 678 return blocked_reason; |
672 } | 679 } |
673 | 680 |
674 ResourceRequestBlockedReason FrameFetchContext::CanRequestInternal( | 681 ResourceRequestBlockedReason FrameFetchContext::CanRequestInternal( |
675 Resource::Type type, | 682 Resource::Type type, |
676 const ResourceRequest& resource_request, | 683 const ResourceRequest& resource_request, |
677 const KURL& url, | 684 const KURL& url, |
678 const ResourceLoaderOptions& options, | 685 const ResourceLoaderOptions& options, |
679 SecurityViolationReportingPolicy reporting_policy, | 686 SecurityViolationReportingPolicy reporting_policy, |
680 FetchParameters::OriginRestriction origin_restriction, | 687 FetchParameters::OriginRestriction origin_restriction, |
681 ResourceRequest::RedirectStatus redirect_status) const { | 688 ResourceRequest::RedirectStatus redirect_status) const { |
682 bool should_block_request = false; | 689 bool should_block_request = false; |
683 probe::shouldBlockRequest(GetFrame(), resource_request, | 690 probe::shouldBlockRequest(GetDocument(), resource_request, |
684 &should_block_request); | 691 &should_block_request); |
685 if (should_block_request) | 692 if (should_block_request) |
686 return ResourceRequestBlockedReason::kInspector; | 693 return ResourceRequestBlockedReason::kInspector; |
687 | 694 |
688 SecurityOrigin* security_origin = options.security_origin.Get(); | 695 SecurityOrigin* security_origin = options.security_origin.Get(); |
689 if (!security_origin && execution_context_) | 696 if (!security_origin && execution_context_) |
690 security_origin = execution_context_->GetSecurityOrigin(); | 697 security_origin = execution_context_->GetSecurityOrigin(); |
691 | 698 |
692 if (origin_restriction != FetchParameters::kNoOriginRestriction && | 699 if (origin_restriction != FetchParameters::kNoOriginRestriction && |
693 security_origin && !security_origin->CanDisplay(url)) { | 700 security_origin && !security_origin->CanDisplay(url)) { |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 | 866 |
860 int64_t FrameFetchContext::ServiceWorkerID() const { | 867 int64_t FrameFetchContext::ServiceWorkerID() const { |
861 DCHECK(MasterDocumentLoader()); | 868 DCHECK(MasterDocumentLoader()); |
862 auto* service_worker_network_provider = | 869 auto* service_worker_network_provider = |
863 MasterDocumentLoader()->GetServiceWorkerNetworkProvider(); | 870 MasterDocumentLoader()->GetServiceWorkerNetworkProvider(); |
864 return service_worker_network_provider | 871 return service_worker_network_provider |
865 ? service_worker_network_provider->ServiceWorkerID() | 872 ? service_worker_network_provider->ServiceWorkerID() |
866 : -1; | 873 : -1; |
867 } | 874 } |
868 | 875 |
| 876 int FrameFetchContext::ApplicationCacheHostID() const { |
| 877 if (!document_loader_) |
| 878 return 0; |
| 879 return document_loader_->GetApplicationCacheHost()->GetHostID(); |
| 880 } |
| 881 |
869 bool FrameFetchContext::IsMainFrame() const { | 882 bool FrameFetchContext::IsMainFrame() const { |
870 return GetFrame()->IsMainFrame(); | 883 return GetFrame()->IsMainFrame(); |
871 } | 884 } |
872 | 885 |
873 bool FrameFetchContext::DefersLoading() const { | 886 bool FrameFetchContext::DefersLoading() const { |
874 return GetFrame()->GetPage()->Suspended(); | 887 return GetFrame()->GetPage()->Suspended(); |
875 } | 888 } |
876 | 889 |
877 bool FrameFetchContext::IsLoadComplete() const { | 890 bool FrameFetchContext::IsLoadComplete() const { |
878 return GetDocument() && GetDocument()->LoadEventFinished(); | 891 return GetDocument() && GetDocument()->LoadEventFinished(); |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1019 return priority; | 1032 return priority; |
1020 | 1033 |
1021 // If enabled, drop the priority of all resources in a subframe. | 1034 // If enabled, drop the priority of all resources in a subframe. |
1022 if (GetFrame()->GetSettings()->GetLowPriorityIframes() && | 1035 if (GetFrame()->GetSettings()->GetLowPriorityIframes() && |
1023 !GetFrame()->IsMainFrame()) | 1036 !GetFrame()->IsMainFrame()) |
1024 return kResourceLoadPriorityVeryLow; | 1037 return kResourceLoadPriorityVeryLow; |
1025 | 1038 |
1026 return priority; | 1039 return priority; |
1027 } | 1040 } |
1028 | 1041 |
| 1042 RefPtr<WebTaskRunner> FrameFetchContext::TimerTaskRunner() const { |
| 1043 return GetFrame()->FrameScheduler()->TimerTaskRunner(); |
| 1044 } |
| 1045 |
1029 RefPtr<WebTaskRunner> FrameFetchContext::LoadingTaskRunner() const { | 1046 RefPtr<WebTaskRunner> FrameFetchContext::LoadingTaskRunner() const { |
1030 return GetFrame()->FrameScheduler()->LoadingTaskRunner(); | 1047 return GetFrame()->FrameScheduler()->LoadingTaskRunner(); |
1031 } | 1048 } |
1032 | 1049 |
| 1050 WebURLLoader* FrameFetchContext::CreateURLLoader() { |
| 1051 return Platform::Current()->CreateURLLoader(); |
| 1052 } |
| 1053 |
1033 DEFINE_TRACE(FrameFetchContext) { | 1054 DEFINE_TRACE(FrameFetchContext) { |
1034 visitor->Trace(document_loader_); | 1055 visitor->Trace(document_loader_); |
1035 BaseFetchContext::Trace(visitor); | 1056 BaseFetchContext::Trace(visitor); |
1036 } | 1057 } |
1037 | 1058 |
1038 } // namespace blink | 1059 } // namespace blink |
OLD | NEW |