OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/subresource_filter/content/renderer/web_document_subresourc
e_filter_impl.h" | 5 #include "components/subresource_filter/content/renderer/web_document_subresourc
e_filter_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
| 9 #include "base/memory/ptr_util.h" |
9 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
10 #include "components/subresource_filter/core/common/activation_state.h" | 11 #include "components/subresource_filter/core/common/activation_state.h" |
11 #include "components/subresource_filter/core/common/memory_mapped_ruleset.h" | 12 #include "components/subresource_filter/core/common/memory_mapped_ruleset.h" |
| 13 #include "components/subresource_filter/core/common/url_pattern.h" |
12 #include "third_party/WebKit/public/platform/WebURL.h" | 14 #include "third_party/WebKit/public/platform/WebURL.h" |
13 #include "third_party/WebKit/public/platform/WebURLRequest.h" | 15 #include "third_party/WebKit/public/platform/WebURLRequest.h" |
14 #include "url/gurl.h" | 16 #include "url/gurl.h" |
15 #include "url/origin.h" | 17 #include "url/origin.h" |
16 | 18 |
17 namespace subresource_filter { | 19 namespace subresource_filter { |
18 | 20 |
19 namespace { | 21 namespace { |
20 | 22 |
21 using WebLoadPolicy = blink::WebDocumentSubresourceFilter::LoadPolicy; | 23 using WebLoadPolicy = blink::WebDocumentSubresourceFilter::LoadPolicy; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 case LoadPolicy::DISALLOW: | 82 case LoadPolicy::DISALLOW: |
81 return WebLoadPolicy::kDisallow; | 83 return WebLoadPolicy::kDisallow; |
82 case LoadPolicy::WOULD_DISALLOW: | 84 case LoadPolicy::WOULD_DISALLOW: |
83 return WebLoadPolicy::kWouldDisallow; | 85 return WebLoadPolicy::kWouldDisallow; |
84 default: | 86 default: |
85 NOTREACHED(); | 87 NOTREACHED(); |
86 return WebLoadPolicy::kAllow; | 88 return WebLoadPolicy::kAllow; |
87 } | 89 } |
88 } | 90 } |
89 | 91 |
| 92 class LogRuleRecorder : public RuleRecorder { |
| 93 public: |
| 94 ~LogRuleRecorder() override {} |
| 95 void RecordRuleUsage(const flat::UrlRule* rule) override { |
| 96 if (!rule) |
| 97 return; |
| 98 std::string domains; |
| 99 auto* domains_included = rule->domains_included(); |
| 100 auto* domains_excluded = rule->domains_excluded(); |
| 101 if (domains_included || domains_excluded) { |
| 102 domains += " Domains:"; |
| 103 if (domains_included) { |
| 104 domains += " +("; |
| 105 for (const auto* domain : *domains_included) { |
| 106 domains += domain->str(); |
| 107 domains += " "; |
| 108 } |
| 109 domains += ")"; |
| 110 } |
| 111 if (domains_excluded) { |
| 112 domains += " -("; |
| 113 for (const auto* domain : *domains_excluded) { |
| 114 domains += domain->str(); |
| 115 domains += " "; |
| 116 } |
| 117 domains += ")"; |
| 118 } |
| 119 } |
| 120 UrlPattern pattern(*rule); |
| 121 LOG(ERROR) << "rule " << pattern << domains; |
| 122 } |
| 123 }; |
| 124 |
90 } // namespace | 125 } // namespace |
91 | 126 |
92 WebDocumentSubresourceFilterImpl::~WebDocumentSubresourceFilterImpl() = default; | 127 WebDocumentSubresourceFilterImpl::~WebDocumentSubresourceFilterImpl() = default; |
93 | 128 |
94 WebDocumentSubresourceFilterImpl::WebDocumentSubresourceFilterImpl( | 129 WebDocumentSubresourceFilterImpl::WebDocumentSubresourceFilterImpl( |
95 url::Origin document_origin, | 130 url::Origin document_origin, |
96 ActivationState activation_state, | 131 ActivationState activation_state, |
97 scoped_refptr<const MemoryMappedRuleset> ruleset, | 132 scoped_refptr<const MemoryMappedRuleset> ruleset, |
98 base::OnceClosure first_disallowed_load_callback) | 133 base::OnceClosure first_disallowed_load_callback) |
99 : filter_(std::move(document_origin), activation_state, std::move(ruleset)), | 134 : filter_(std::move(document_origin), |
| 135 activation_state, |
| 136 std::move(ruleset), |
| 137 base::MakeUnique<LogRuleRecorder>()), |
100 first_disallowed_load_callback_( | 138 first_disallowed_load_callback_( |
101 std::move(first_disallowed_load_callback)) {} | 139 std::move(first_disallowed_load_callback)) {} |
102 | 140 |
103 WebLoadPolicy WebDocumentSubresourceFilterImpl::GetLoadPolicy( | 141 WebLoadPolicy WebDocumentSubresourceFilterImpl::GetLoadPolicy( |
104 const blink::WebURL& resourceUrl, | 142 const blink::WebURL& resourceUrl, |
105 blink::WebURLRequest::RequestContext request_context) { | 143 blink::WebURLRequest::RequestContext request_context) { |
106 return getLoadPolicyImpl(resourceUrl, ToElementType(request_context)); | 144 return getLoadPolicyImpl(resourceUrl, ToElementType(request_context)); |
107 } | 145 } |
108 | 146 |
109 WebLoadPolicy | 147 WebLoadPolicy |
(...skipping 19 matching lines...) Expand all Loading... |
129 url.ProtocolIs(url::kDataScheme)) { | 167 url.ProtocolIs(url::kDataScheme)) { |
130 ++filter_.statistics().num_loads_total; | 168 ++filter_.statistics().num_loads_total; |
131 return WebLoadPolicy::kAllow; | 169 return WebLoadPolicy::kAllow; |
132 } | 170 } |
133 | 171 |
134 // TODO(pkalinnikov): Would be good to avoid converting to GURL. | 172 // TODO(pkalinnikov): Would be good to avoid converting to GURL. |
135 return ToWebLoadPolicy(filter_.GetLoadPolicy(GURL(url), element_type)); | 173 return ToWebLoadPolicy(filter_.GetLoadPolicy(GURL(url), element_type)); |
136 } | 174 } |
137 | 175 |
138 } // namespace subresource_filter | 176 } // namespace subresource_filter |
OLD | NEW |