Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: components/subresource_filter/content/renderer/web_document_subresource_filter_impl.cc

Issue 2894523006: Add instrumentation hooks to mesaure which subresource filter rules are used.
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698