Roll src/third_party/WebKit f298044:aa8346d (svn 202628:202629)
[chromium-blink-merge.git] / components / navigation_interception / intercept_navigation_throttle.h
blob0b7f74605378266e5e09a549127d53639e1617a4
1 // Copyright 2015 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.
5 #ifndef COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_THROTTLE_H_
6 #define COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_THROTTLE_H_
8 #include <string>
10 #include "base/callback.h"
11 #include "base/memory/weak_ptr.h"
12 #include "content/public/browser/navigation_throttle.h"
14 class GURL;
16 namespace content {
17 class NavigationHandle;
18 class WebContents;
21 namespace navigation_interception {
23 class NavigationParams;
25 // This class allows the provider of the Callback to selectively ignore top
26 // level navigations. This is a UI thread class.
27 class InterceptNavigationThrottle : public content::NavigationThrottle {
28 public:
29 typedef base::Callback<bool(content::WebContents* /* source */,
30 const NavigationParams& /* navigation_params */)>
31 CheckCallback;
33 InterceptNavigationThrottle(content::NavigationHandle* navigation_handle,
34 CheckCallback should_ignore_callback);
35 ~InterceptNavigationThrottle() override;
37 // content::NavigationThrottle implementation:
38 ThrottleCheckResult WillStartRequest() override;
39 ThrottleCheckResult WillRedirectRequest() override;
41 private:
42 ThrottleCheckResult CheckIfShouldIgnoreNavigation(bool is_redirect);
44 CheckCallback should_ignore_callback_;
46 DISALLOW_COPY_AND_ASSIGN(InterceptNavigationThrottle);
49 } // namespace navigation_interception
51 #endif // COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_THROTTLE_H_