Chromium Code Reviews| Index: third_party/WebKit/Source/core/loader/SubresourceFilter.cpp |
| diff --git a/third_party/WebKit/Source/core/loader/SubresourceFilter.cpp b/third_party/WebKit/Source/core/loader/SubresourceFilter.cpp |
| index bdfbdf10756a94ec33a0dce2aeb67cb83cc3a41a..34556438a9a05ee054c07040ba7978346b7c71c2 100644 |
| --- a/third_party/WebKit/Source/core/loader/SubresourceFilter.cpp |
| +++ b/third_party/WebKit/Source/core/loader/SubresourceFilter.cpp |
| @@ -6,13 +6,30 @@ |
| #include <utility> |
| +#include "core/dom/Document.h" |
| #include "core/dom/TaskRunnerHelper.h" |
| +#include "core/frame/LocalFrame.h" |
| +#include "core/inspector/ConsoleMessage.h" |
| #include "platform/WebTaskRunner.h" |
| #include "platform/weborigin/KURL.h" |
| +#include "platform/wtf/text/StringBuilder.h" |
| #include "public/platform/WebTraceLocation.h" |
| namespace blink { |
| +namespace { |
| + |
| +String GetErrorStringForDisallowedLoad(const KURL& url) { |
| + // TODO(shivanisha): Update the string when finalized. |
| + StringBuilder builder; |
| + builder.Append("Subresource filtering disallowed loading this resource, "); |
| + builder.Append(url.GetString()); |
| + builder.Append("."); |
| + return builder.ToString(); |
| +} |
| + |
| +} // namespace |
| + |
| // static |
| SubresourceFilter* SubresourceFilter::Create( |
| DocumentLoader* loader, |
| @@ -36,8 +53,9 @@ bool SubresourceFilter::AllowLoad( |
| // Pair<url string, context> -> LoadPolicy. |
| WebDocumentSubresourceFilter::LoadPolicy load_policy = |
| subresource_filter_->GetLoadPolicy(resource_url, request_context); |
| + |
| if (reporting_policy == SecurityViolationReportingPolicy::kReport) |
| - ReportLoad(load_policy); |
| + ReportLoad(resource_url, load_policy); |
| return load_policy != WebDocumentSubresourceFilter::kDisallow; |
| } |
| @@ -54,21 +72,28 @@ bool SubresourceFilter::AllowWebSocketConnection(const KURL& url) { |
| DCHECK(task_runner->RunsTasksOnCurrentThread()); |
| task_runner->PostTask(BLINK_FROM_HERE, |
| WTF::Bind(&SubresourceFilter::ReportLoad, |
| - WrapPersistent(this), load_policy)); |
| + WrapPersistent(this), url, load_policy)); |
| return load_policy != WebDocumentSubresourceFilter::kDisallow; |
| } |
| void SubresourceFilter::ReportLoad( |
| + const KURL& resource_url, |
| WebDocumentSubresourceFilter::LoadPolicy load_policy) { |
| + Document* document = document_loader_->GetFrame() |
| + ? document_loader_->GetFrame()->GetDocument() |
| + : nullptr; |
| switch (load_policy) { |
| case WebDocumentSubresourceFilter::kAllow: |
| break; |
| case WebDocumentSubresourceFilter::kDisallow: |
| subresource_filter_->ReportDisallowedLoad(); |
| + if (document && subresource_filter_->ShouldLogToConsole()) { |
| + document->AddConsoleMessage(ConsoleMessage::Create( |
| + kJSMessageSource, kErrorMessageLevel, |
| + GetErrorStringForDisallowedLoad(resource_url))); |
| + } |
| // fall through |
| case WebDocumentSubresourceFilter::kWouldDisallow: |
| - // TODO(csharrison): log console errors here based on |
|
Charlie Harrison
2017/05/23 20:35:51
Shouldn't we put it here so this will log if enabl
shivanisha
2017/05/23 20:40:01
I think for warning list we don't want to log for
Charlie Harrison
2017/05/23 20:42:04
SGTM. Can you add a quick comment to that effect?
shivanisha
2017/05/24 16:39:54
Added a comment
|
| - // subresource_filter_->ShouldLogToConsole(). |
| document_loader_->DidObserveLoadingBehavior( |
| kWebLoadingBehaviorSubresourceFilterMatch); |
| break; |