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

Unified Diff: content/public/test/cancelling_navigation_throttle.cc

Issue 2834543003: [subresource_filter] SB throttle can send multiple speculative requests. (Closed)
Patch Set: Add NoRedirectSpeculation metric Created 3 years, 8 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: content/public/test/cancelling_navigation_throttle.cc
diff --git a/content/public/test/cancelling_navigation_throttle.cc b/content/public/test/cancelling_navigation_throttle.cc
new file mode 100644
index 0000000000000000000000000000000000000000..961641c1592dc271318838c68d2e00938abaf9e3
--- /dev/null
+++ b/content/public/test/cancelling_navigation_throttle.cc
@@ -0,0 +1,63 @@
+// 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.
+
+#include "content/public/test/cancelling_navigation_throttle.h"
+
+#include "base/bind.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/navigation_handle.h"
+
+namespace content {
+
+CancellingNavigationThrottle::CancellingNavigationThrottle(
+ NavigationHandle* handle,
+ CancelTime cancel_time,
+ ResultSynchrony sync)
+ : NavigationThrottle(handle),
+ cancel_time_(cancel_time),
+ sync_(sync),
+ weak_ptr_factory_(this) {}
+
+CancellingNavigationThrottle::~CancellingNavigationThrottle() {}
+
+NavigationThrottle::ThrottleCheckResult
+CancellingNavigationThrottle::WillStartRequest() {
+ return ProcessState(cancel_time_ == WILL_START_REQUEST);
+}
+
+NavigationThrottle::ThrottleCheckResult
+CancellingNavigationThrottle::WillRedirectRequest() {
+ return ProcessState(cancel_time_ == WILL_REDIRECT_REQUEST);
+}
+
+NavigationThrottle::ThrottleCheckResult
+CancellingNavigationThrottle::WillProcessResponse() {
+ return ProcessState(cancel_time_ == WILL_PROCESS_RESPONSE);
+}
+
+NavigationThrottle::ThrottleCheckResult
+CancellingNavigationThrottle::ProcessState(bool should_cancel) {
+ if (sync_ == ASYNCHRONOUS) {
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&CancellingNavigationThrottle::MaybeCancel,
+ weak_ptr_factory_.GetWeakPtr(), should_cancel));
+ return NavigationThrottle::DEFER;
+ }
+ return should_cancel ? NavigationThrottle::CANCEL
+ : NavigationThrottle::PROCEED;
+}
+
+const char* CancellingNavigationThrottle::GetNameForLogging() {
+ return "CancellingNavigationThrottle";
+}
+
+void CancellingNavigationThrottle::MaybeCancel(bool cancel) {
+ if (cancel)
+ navigation_handle()->CancelDeferredNavigation(NavigationThrottle::CANCEL);
+ else
+ navigation_handle()->Resume();
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698