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

Unified Diff: components/navigation_interception/intercept_navigation_throttle.h

Issue 1357803004: Reland of Add a NavigationThrottle to the public content/ interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@navigation-api
Patch Set: Created 5 years, 3 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/navigation_interception/intercept_navigation_throttle.h
diff --git a/components/navigation_interception/intercept_navigation_throttle.h b/components/navigation_interception/intercept_navigation_throttle.h
new file mode 100644
index 0000000000000000000000000000000000000000..0b7f74605378266e5e09a549127d53639e1617a4
--- /dev/null
+++ b/components/navigation_interception/intercept_navigation_throttle.h
@@ -0,0 +1,51 @@
+// Copyright 2015 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_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_THROTTLE_H_
+#define COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_THROTTLE_H_
+
+#include <string>
+
+#include "base/callback.h"
+#include "base/memory/weak_ptr.h"
+#include "content/public/browser/navigation_throttle.h"
+
+class GURL;
+
+namespace content {
+class NavigationHandle;
+class WebContents;
+}
+
+namespace navigation_interception {
+
+class NavigationParams;
+
+// This class allows the provider of the Callback to selectively ignore top
+// level navigations. This is a UI thread class.
+class InterceptNavigationThrottle : public content::NavigationThrottle {
+ public:
+ typedef base::Callback<bool(content::WebContents* /* source */,
+ const NavigationParams& /* navigation_params */)>
+ CheckCallback;
+
+ InterceptNavigationThrottle(content::NavigationHandle* navigation_handle,
+ CheckCallback should_ignore_callback);
+ ~InterceptNavigationThrottle() override;
+
+ // content::NavigationThrottle implementation:
+ ThrottleCheckResult WillStartRequest() override;
+ ThrottleCheckResult WillRedirectRequest() override;
+
+ private:
+ ThrottleCheckResult CheckIfShouldIgnoreNavigation(bool is_redirect);
+
+ CheckCallback should_ignore_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(InterceptNavigationThrottle);
+};
+
+} // namespace navigation_interception
+
+#endif // COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_THROTTLE_H_

Powered by Google App Engine
This is Rietveld 408576698