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

Unified Diff: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc

Issue 2446503002: Fix SubResourceFilter to work with PlzNavigate. (Closed)
Patch Set: fix unit tests Created 4 years, 2 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/content/browser/content_subresource_filter_driver_factory.cc
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
index 3a3747d4b1e251d9c1e18f133720ed14f18fb535..57bd1de7c13068b7955ce5f5b43c4f3dc3801fe5 100644
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
@@ -10,6 +10,7 @@
#include "components/subresource_filter/core/browser/subresource_filter_client.h"
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
#include "components/subresource_filter/core/common/activation_list.h"
+#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "ipc/ipc_message_macros.h"
@@ -71,13 +72,12 @@ void ContentSubresourceFilterDriverFactory::OnFirstSubresourceLoadDisallowed() {
bool ContentSubresourceFilterDriverFactory::IsWhitelisted(
const GURL& url) const {
- return whitelisted_set().find(url.host()) != whitelisted_set().end();
+ return whitelisted_hosts_.find(url.host()) != whitelisted_hosts_.end();
jam 2016/10/24 04:51:20 I hope you don't mind, but I removed the accessor
}
bool ContentSubresourceFilterDriverFactory::IsHit(const GURL& url) const {
- return safe_browsing_blacklisted_patterns_set().find(url.host() +
- url.path()) !=
- safe_browsing_blacklisted_patterns_set().end();
+ return safe_browsing_blacklisted_patterns_.find(url.host() + url.path()) !=
+ safe_browsing_blacklisted_patterns_.end();
}
@@ -113,15 +113,6 @@ void ContentSubresourceFilterDriverFactory::AddToActivationHitsSet(
safe_browsing_blacklisted_patterns_.insert(url.host() + url.path());
}
-void ContentSubresourceFilterDriverFactory::ReadyToCommitMainFrameNavigation(
- content::RenderFrameHost* render_frame_host,
- const GURL& url) {
- if (ShouldActivateForMainFrameURL(url)) {
- set_activation_state(GetMaximumActivationState());
- ActivateForFrameHostIfNeeded(render_frame_host, url);
- }
-}
-
bool ContentSubresourceFilterDriverFactory::ShouldActivateForMainFrameURL(
const GURL& url) const {
if (GetCurrentActivationScope() == ActivationScope::ALL_SITES)
@@ -136,7 +127,7 @@ void ContentSubresourceFilterDriverFactory::ActivateForFrameHostIfNeeded(
const GURL& url) {
if (activation_state_ != ActivationState::DISABLED) {
DriverFromFrameHost(render_frame_host)
- ->ActivateForProvisionalLoad(GetMaximumActivationState());
+ ->ActivateForProvisionalLoad(GetMaximumActivationState(), url);
}
}
@@ -172,20 +163,23 @@ void ContentSubresourceFilterDriverFactory::RenderFrameDeleted(
frame_drivers_.erase(render_frame_host);
}
-void ContentSubresourceFilterDriverFactory::DidStartProvisionalLoadForFrame(
- content::RenderFrameHost* render_frame_host,
- const GURL& validated_url,
- bool is_error_page,
- bool is_iframe_srcdoc) {
+void ContentSubresourceFilterDriverFactory::DidStartNavigation(
+ content::NavigationHandle* navigation_handle) {
safe_browsing_blacklisted_patterns_.clear();
- if (!render_frame_host->GetParent()) {
+ if (navigation_handle->IsInMainFrame()) {
client_->ToggleNotificationVisibility(false);
- set_activation_state(ActivationState::DISABLED);
- } else {
- ActivateForFrameHostIfNeeded(render_frame_host, validated_url);
+ activation_state_ = ActivationState::DISABLED;
}
}
+void ContentSubresourceFilterDriverFactory::ReadyToCommitNavigation(
+ content::NavigationHandle* navigation_handle) {
+ content::RenderFrameHost* render_frame_host =
+ navigation_handle->GetRenderFrameHost();
+ GURL url = navigation_handle->GetURL();
+ ReadyToCommitNavigationInternal(render_frame_host, url);
+}
+
bool ContentSubresourceFilterDriverFactory::OnMessageReceived(
const IPC::Message& message,
content::RenderFrameHost* render_frame_host) {
@@ -198,9 +192,19 @@ bool ContentSubresourceFilterDriverFactory::OnMessageReceived(
return handled;
}
-void ContentSubresourceFilterDriverFactory::set_activation_state(
- const ActivationState& new_activation_state) {
- activation_state_ = new_activation_state;
+void ContentSubresourceFilterDriverFactory::ReadyToCommitNavigationInternal(
+ content::RenderFrameHost* render_frame_host,
+ const GURL& url) {
+ if (!render_frame_host->GetParent()) {
+ if (ShouldActivateForMainFrameURL(url)) {
+ activation_state_ = GetMaximumActivationState();
+ ActivateForFrameHostIfNeeded(render_frame_host, url);
+ } else {
+ activation_state_ = ActivationState::DISABLED;
+ }
+ } else {
+ ActivateForFrameHostIfNeeded(render_frame_host, url);
+ }
}
} // namespace subresource_filter

Powered by Google App Engine
This is Rietveld 408576698