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

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

Issue 2697363005: Move DocumentSubresourceFilter to core/common. (Closed)
Patch Set: Clean up. Created 3 years, 10 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "components/subresource_filter/content/renderer/web_document_subresourc e_filter_impl.h"
6
7 #include <utility>
8
9 #include "components/subresource_filter/core/common/memory_mapped_ruleset.h"
10 #include "components/subresource_filter/core/common/proto/rules.pb.h"
11
12 namespace subresource_filter {
13
14 namespace {
15
16 using BlinkLoadPolicy = blink::WebDocumentSubresourceFilter::LoadPolicy;
17
18 proto::ElementType ToElementType(
19 blink::WebURLRequest::RequestContext request_context) {
20 switch (request_context) {
21 case blink::WebURLRequest::RequestContextAudio:
22 case blink::WebURLRequest::RequestContextVideo:
23 case blink::WebURLRequest::RequestContextTrack:
24 return proto::ELEMENT_TYPE_MEDIA;
25 case blink::WebURLRequest::RequestContextBeacon:
26 case blink::WebURLRequest::RequestContextPing:
27 return proto::ELEMENT_TYPE_PING;
28 case blink::WebURLRequest::RequestContextEmbed:
29 case blink::WebURLRequest::RequestContextObject:
30 case blink::WebURLRequest::RequestContextPlugin:
31 return proto::ELEMENT_TYPE_OBJECT;
32 case blink::WebURLRequest::RequestContextEventSource:
33 case blink::WebURLRequest::RequestContextFetch:
34 case blink::WebURLRequest::RequestContextXMLHttpRequest:
35 return proto::ELEMENT_TYPE_XMLHTTPREQUEST;
36 case blink::WebURLRequest::RequestContextFavicon:
37 case blink::WebURLRequest::RequestContextImage:
38 case blink::WebURLRequest::RequestContextImageSet:
39 return proto::ELEMENT_TYPE_IMAGE;
40 case blink::WebURLRequest::RequestContextFont:
41 return proto::ELEMENT_TYPE_FONT;
42 case blink::WebURLRequest::RequestContextFrame:
43 case blink::WebURLRequest::RequestContextForm:
44 case blink::WebURLRequest::RequestContextHyperlink:
45 case blink::WebURLRequest::RequestContextIframe:
46 case blink::WebURLRequest::RequestContextInternal:
47 case blink::WebURLRequest::RequestContextLocation:
48 return proto::ELEMENT_TYPE_SUBDOCUMENT;
49 case blink::WebURLRequest::RequestContextScript:
50 case blink::WebURLRequest::RequestContextServiceWorker:
51 case blink::WebURLRequest::RequestContextSharedWorker:
52 return proto::ELEMENT_TYPE_SCRIPT;
53 case blink::WebURLRequest::RequestContextStyle:
54 case blink::WebURLRequest::RequestContextXSLT:
55 return proto::ELEMENT_TYPE_STYLESHEET;
56
57 case blink::WebURLRequest::RequestContextPrefetch:
58 case blink::WebURLRequest::RequestContextSubresource:
59 return proto::ELEMENT_TYPE_OTHER;
60
61 case blink::WebURLRequest::RequestContextCSPReport:
62 case blink::WebURLRequest::RequestContextDownload:
63 case blink::WebURLRequest::RequestContextImport:
64 case blink::WebURLRequest::RequestContextManifest:
65 case blink::WebURLRequest::RequestContextUnspecified:
66 default:
67 return proto::ELEMENT_TYPE_UNSPECIFIED;
68 }
69 }
70
71 BlinkLoadPolicy ToBlinkLoadPolicy(LoadPolicy load_policy) {
engedy 2017/02/17 16:44:04 By tradition, name this WebLoadPolicy.
pkalinnikov 2017/02/17 17:16:48 Done.
72 switch (load_policy) {
73 case LoadPolicy::ALLOW:
74 return BlinkLoadPolicy::Allow;
75 case LoadPolicy::DISALLOW:
76 return BlinkLoadPolicy::Disallow;
77 case LoadPolicy::WOULD_DISALLOW:
78 return BlinkLoadPolicy::WouldDisallow;
79 }
80 NOTREACHED();
engedy 2017/02/17 16:44:04 nit: Move this under a default: label.
pkalinnikov 2017/02/17 17:16:48 Done.
81 return BlinkLoadPolicy::Allow;
82 }
83
84 } // namespace
85
86 WebDocumentSubresourceFilterImpl::~WebDocumentSubresourceFilterImpl() = default;
87
88 WebDocumentSubresourceFilterImpl::WebDocumentSubresourceFilterImpl(
89 url::Origin document_origin,
90 ActivationState activation_state,
91 scoped_refptr<const MemoryMappedRuleset> ruleset,
92 base::OnceClosure first_disallowed_load_callback)
93 : filter_(std::move(document_origin), activation_state, std::move(ruleset)),
engedy 2017/02/17 16:44:04 nit: #include "base/memory/ref_counted.h" for the
pkalinnikov 2017/02/17 17:16:48 Done.
94 first_disallowed_load_callback_(
95 std::move(first_disallowed_load_callback)) {}
96
97 blink::WebDocumentSubresourceFilter::LoadPolicy
98 WebDocumentSubresourceFilterImpl::getLoadPolicy(
99 const blink::WebURL& resourceUrl,
100 blink::WebURLRequest::RequestContext request_context) {
101 ++filter_.statistics().num_loads_total;
102
103 if (filter_.activation_state().filtering_disabled_for_document)
104 return BlinkLoadPolicy::Allow;
105 if (resourceUrl.protocolIs(url::kDataScheme))
106 return BlinkLoadPolicy::Allow;
107
108 // TODO(pkalinnikov): Would be good to avoid converting to GURL.
109 return ToBlinkLoadPolicy(
110 filter_.GetLoadPolicy(GURL(resourceUrl), ToElementType(request_context)));
111 }
112
113 void WebDocumentSubresourceFilterImpl::reportDisallowedLoad() {
114 if (!first_disallowed_load_callback_.is_null())
115 std::move(first_disallowed_load_callback_).Run();
116 }
117
118 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698