diff options
Diffstat (limited to 'chromium/components/policy/content/policy_blocklist_navigation_throttle.h')
-rw-r--r-- | chromium/components/policy/content/policy_blocklist_navigation_throttle.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/chromium/components/policy/content/policy_blocklist_navigation_throttle.h b/chromium/components/policy/content/policy_blocklist_navigation_throttle.h new file mode 100644 index 00000000000..c77d03332ba --- /dev/null +++ b/chromium/components/policy/content/policy_blocklist_navigation_throttle.h @@ -0,0 +1,55 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_POLICY_CONTENT_POLICY_BLOCKLIST_NAVIGATION_THROTTLE_H_ +#define COMPONENTS_POLICY_CONTENT_POLICY_BLOCKLIST_NAVIGATION_THROTTLE_H_ + +#include "components/policy/content/safe_sites_navigation_throttle.h" +#include "content/public/browser/navigation_throttle.h" + +class GURL; +class PolicyBlocklistService; +class PrefService; + +// PolicyBlocklistNavigationThrottle provides a simple way to block a navigation +// based on the URLBlocklistManager and Safe Search API. If the URL is on the +// blocklist or allowlist, the throttle will immediately block or allow the +// navigation. Otherwise, the URL will be checked against the Safe Search API if +// the SafeSitesFilterBehavior policy is enabled. This final check may be +// asynchronous if the result hasn't been cached yet. +class PolicyBlocklistNavigationThrottle : public content::NavigationThrottle { + public: + PolicyBlocklistNavigationThrottle( + content::NavigationHandle* navigation_handle, + content::BrowserContext* context); + PolicyBlocklistNavigationThrottle(const PolicyBlocklistNavigationThrottle&) = + delete; + PolicyBlocklistNavigationThrottle& operator=( + const PolicyBlocklistNavigationThrottle&) = delete; + ~PolicyBlocklistNavigationThrottle() override; + + // NavigationThrottle overrides. + ThrottleCheckResult WillStartRequest() override; + ThrottleCheckResult WillRedirectRequest() override; + const char* GetNameForLogging() override; + + private: + // Returns TRUE if this navigation is to view-source: and view-source is on + // the URLBlocklist. + bool IsBlockedViewSourceNavigation(); + + // To ensure both allow and block policies override Safe Sites, + // SafeSitesNavigationThrottle must be consulted as part of this throttle + // rather than added separately to the list of throttles. + ThrottleCheckResult CheckSafeSitesFilter(const GURL& url); + void OnDeferredSafeSitesResult(bool is_safe, + ThrottleCheckResult cancel_result); + SafeSitesNavigationThrottle safe_sites_navigation_throttle_; + + raw_ptr<PolicyBlocklistService> blocklist_service_; + + raw_ptr<PrefService> prefs_; +}; + +#endif // COMPONENTS_POLICY_CONTENT_POLICY_BLOCKLIST_NAVIGATION_THROTTLE_H_ |