// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_PUBLIC_BROWSER_NAVIGATION_THROTTLE_H_ #define CONTENT_PUBLIC_BROWSER_NAVIGATION_THROTTLE_H_ #include <optional> #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "content/common/content_export.h" #include "net/base/net_errors.h" namespace content { class NavigationHandle; // A NavigationThrottle tracks and allows interaction with a navigation on the // UI thread. NavigationThrottles may not be run for some kinds of navigations // (e.g. same-document navigations, about:blank, activations into the primary // frame tree like prerendering and back-forward cache, etc.). Content-internal // code that just wishes to defer a commit, including activations to the // primary frame tree, should instead use a CommitDeferringCondition. class CONTENT_EXPORT NavigationThrottle { … }; #if defined(UNIT_TEST) // Test-only operator== to enable assertions like: // EXPECT_EQ(NavigationThrottle::PROCEED, throttle->WillProcessResponse()) inline bool operator==(NavigationThrottle::ThrottleAction lhs, const NavigationThrottle::ThrottleCheckResult& rhs) { return lhs == rhs.action(); } // Test-only operator!= to enable assertions like: // EXPECT_NE(NavigationThrottle::PROCEED, throttle->WillProcessResponse()) inline bool operator!=(NavigationThrottle::ThrottleAction lhs, const NavigationThrottle::ThrottleCheckResult& rhs) { return lhs != rhs.action(); } #endif } // namespace content #endif // CONTENT_PUBLIC_BROWSER_NAVIGATION_THROTTLE_H_