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_
10 #include "base/callback.h"
11 #include "base/memory/weak_ptr.h"
12 #include "content/public/browser/navigation_throttle.h"
17 class NavigationHandle
;
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
{
29 typedef base::Callback
<bool(content::WebContents
* /* source */,
30 const NavigationParams
& /* navigation_params */)>
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
;
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_