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

Unified Diff: components/subresource_filter/core/common/document_subresource_filter.cc

Issue 2697363005: Move DocumentSubresourceFilter to core/common. (Closed)
Patch Set: Address comments from engedy@. 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 side-by-side diff with in-line comments
Download patch
Index: components/subresource_filter/core/common/document_subresource_filter.cc
diff --git a/components/subresource_filter/content/common/document_subresource_filter.cc b/components/subresource_filter/core/common/document_subresource_filter.cc
similarity index 52%
rename from components/subresource_filter/content/common/document_subresource_filter.cc
rename to components/subresource_filter/core/common/document_subresource_filter.cc
index af7bbba38742024c69ca64fe1f4e3b5af22696f7..e8af188333fd464a6a902b84ae9f6650adf1c6a2 100644
--- a/components/subresource_filter/content/common/document_subresource_filter.cc
+++ b/components/subresource_filter/core/common/document_subresource_filter.cc
@@ -2,77 +2,23 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "components/subresource_filter/content/common/document_subresource_filter.h"
+#include "components/subresource_filter/core/common/document_subresource_filter.h"
-#include <climits>
+#include <utility>
#include "base/logging.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/string_util.h"
#include "base/trace_event/trace_event.h"
#include "components/subresource_filter/core/common/first_party_origin.h"
#include "components/subresource_filter/core/common/memory_mapped_ruleset.h"
#include "components/subresource_filter/core/common/scoped_timers.h"
#include "components/subresource_filter/core/common/time_measurements.h"
-#include "third_party/WebKit/public/platform/WebURL.h"
+#include "url/gurl.h"
+#include "url/origin.h"
namespace subresource_filter {
namespace {
-proto::ElementType ToElementType(
- blink::WebURLRequest::RequestContext request_context) {
- switch (request_context) {
- case blink::WebURLRequest::RequestContextAudio:
- case blink::WebURLRequest::RequestContextVideo:
- case blink::WebURLRequest::RequestContextTrack:
- return proto::ELEMENT_TYPE_MEDIA;
- case blink::WebURLRequest::RequestContextBeacon:
- case blink::WebURLRequest::RequestContextPing:
- return proto::ELEMENT_TYPE_PING;
- case blink::WebURLRequest::RequestContextEmbed:
- case blink::WebURLRequest::RequestContextObject:
- case blink::WebURLRequest::RequestContextPlugin:
- return proto::ELEMENT_TYPE_OBJECT;
- case blink::WebURLRequest::RequestContextEventSource:
- case blink::WebURLRequest::RequestContextFetch:
- case blink::WebURLRequest::RequestContextXMLHttpRequest:
- return proto::ELEMENT_TYPE_XMLHTTPREQUEST;
- case blink::WebURLRequest::RequestContextFavicon:
- case blink::WebURLRequest::RequestContextImage:
- case blink::WebURLRequest::RequestContextImageSet:
- return proto::ELEMENT_TYPE_IMAGE;
- case blink::WebURLRequest::RequestContextFont:
- return proto::ELEMENT_TYPE_FONT;
- case blink::WebURLRequest::RequestContextFrame:
- case blink::WebURLRequest::RequestContextForm:
- case blink::WebURLRequest::RequestContextHyperlink:
- case blink::WebURLRequest::RequestContextIframe:
- case blink::WebURLRequest::RequestContextInternal:
- case blink::WebURLRequest::RequestContextLocation:
- return proto::ELEMENT_TYPE_SUBDOCUMENT;
- case blink::WebURLRequest::RequestContextScript:
- case blink::WebURLRequest::RequestContextServiceWorker:
- case blink::WebURLRequest::RequestContextSharedWorker:
- return proto::ELEMENT_TYPE_SCRIPT;
- case blink::WebURLRequest::RequestContextStyle:
- case blink::WebURLRequest::RequestContextXSLT:
- return proto::ELEMENT_TYPE_STYLESHEET;
-
- case blink::WebURLRequest::RequestContextPrefetch:
- case blink::WebURLRequest::RequestContextSubresource:
- return proto::ELEMENT_TYPE_OTHER;
-
- case blink::WebURLRequest::RequestContextCSPReport:
- case blink::WebURLRequest::RequestContextDownload:
- case blink::WebURLRequest::RequestContextImport:
- case blink::WebURLRequest::RequestContextManifest:
- case blink::WebURLRequest::RequestContextUnspecified:
- default:
- return proto::ELEMENT_TYPE_UNSPECIFIED;
- }
-}
-
ActivationState ComputeActivationStateImpl(
const GURL& document_url,
const url::Origin& parent_document_origin,
@@ -141,13 +87,10 @@ ActivationState ComputeActivationState(
DocumentSubresourceFilter::DocumentSubresourceFilter(
url::Origin document_origin,
ActivationState activation_state,
- scoped_refptr<const MemoryMappedRuleset> ruleset,
- base::OnceClosure first_disallowed_load_callback)
+ scoped_refptr<const MemoryMappedRuleset> ruleset)
: activation_state_(activation_state),
ruleset_(std::move(ruleset)),
- ruleset_matcher_(ruleset_->data(), ruleset_->length()),
- first_disallowed_load_callback_(
- std::move(first_disallowed_load_callback)) {
+ ruleset_matcher_(ruleset_->data(), ruleset_->length()) {
DCHECK_NE(activation_state_.activation_level, ActivationLevel::DISABLED);
if (!activation_state_.filtering_disabled_for_document)
document_origin_.reset(new FirstPartyOrigin(std::move(document_origin)));
@@ -155,44 +98,18 @@ DocumentSubresourceFilter::DocumentSubresourceFilter(
DocumentSubresourceFilter::~DocumentSubresourceFilter() = default;
-blink::WebDocumentSubresourceFilter::LoadPolicy
-DocumentSubresourceFilter::getLoadPolicy(
- const blink::WebURL& resourceUrl,
- blink::WebURLRequest::RequestContext request_context) {
- ++statistics_.num_loads_total;
-
- if (activation_state_.filtering_disabled_for_document)
- return Allow;
- if (resourceUrl.protocolIs(url::kDataScheme))
- return Allow;
-
- // TODO(pkalinnikov): Would be good to avoid converting to GURL.
- return EvaluateLoadPolicy(GURL(resourceUrl), ToElementType(request_context));
-}
+LoadPolicy DocumentSubresourceFilter::GetLoadPolicy(
+ const GURL& subresource_url,
+ proto::ElementType subresource_type) {
+ TRACE_EVENT1("loader", "DocumentSubresourceFilter::GetLoadPolicy", "url",
+ subresource_url.spec());
-blink::WebDocumentSubresourceFilter::LoadPolicy
-DocumentSubresourceFilter::GetLoadPolicyForSubdocument(
- const GURL& subdocument_url) {
++statistics_.num_loads_total;
if (activation_state_.filtering_disabled_for_document)
- return Allow;
- if (subdocument_url.SchemeIs(url::kDataScheme))
- return Allow;
- return EvaluateLoadPolicy(subdocument_url, proto::ELEMENT_TYPE_SUBDOCUMENT);
-}
-
-void DocumentSubresourceFilter::reportDisallowedLoad() {
- if (first_disallowed_load_callback_.is_null())
- return;
- std::move(first_disallowed_load_callback_).Run();
-}
-
-blink::WebDocumentSubresourceFilter::LoadPolicy
-DocumentSubresourceFilter::EvaluateLoadPolicy(const GURL& resource_url,
- proto::ElementType element_type) {
- TRACE_EVENT1("loader", "DocumentSubresourceFilter::EvaluateLoadPolicy", "url",
- resource_url.spec());
+ return LoadPolicy::ALLOW;
+ if (subresource_url.SchemeIs(url::kDataScheme))
+ return LoadPolicy::ALLOW;
auto wall_duration_timer = ScopedTimers::StartIf(
activation_state_.measure_performance &&
@@ -212,17 +129,17 @@ DocumentSubresourceFilter::EvaluateLoadPolicy(const GURL& resource_url,
++statistics_.num_loads_evaluated;
DCHECK(document_origin_);
if (ruleset_matcher_.ShouldDisallowResourceLoad(
- resource_url, *document_origin_, element_type,
+ subresource_url, *document_origin_, subresource_type,
activation_state_.generic_blocking_rules_disabled)) {
++statistics_.num_loads_matching_rules;
if (activation_state_.activation_level == ActivationLevel::ENABLED) {
++statistics_.num_loads_disallowed;
- return Disallow;
+ return LoadPolicy::DISALLOW;
} else if (activation_state_.activation_level == ActivationLevel::DRYRUN) {
- return WouldDisallow;
+ return LoadPolicy::WOULD_DISALLOW;
}
}
- return Allow;
+ return LoadPolicy::ALLOW;
}
} // namespace subresource_filter

Powered by Google App Engine
This is Rietveld 408576698