// Copyright 2016 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 EXTENSIONS_BROWSER_EXTENSION_NAVIGATION_THROTTLE_H_ #define EXTENSIONS_BROWSER_EXTENSION_NAVIGATION_THROTTLE_H_ #include "base/macros.h" #include "content/public/browser/navigation_throttle.h" namespace content { class NavigationHandle; } namespace extensions { // This class allows the extensions subsystem to have control over navigations // and optionally cancel/block them. This is a UI thread class. class ExtensionNavigationThrottle : public content::NavigationThrottle { public: explicit ExtensionNavigationThrottle( content::NavigationHandle* navigation_handle); ~ExtensionNavigationThrottle() override; // content::NavigationThrottle implementation: ThrottleCheckResult WillStartRequest() override; ThrottleCheckResult WillRedirectRequest() override; const char* GetNameForLogging() override; private: // Shared throttle handler. ThrottleCheckResult WillStartOrRedirectRequest(); DISALLOW_COPY_AND_ASSIGN(ExtensionNavigationThrottle); }; } // namespace extensions #endif // EXTENSIONS_BROWSER_EXTENSION_NAVIGATION_THROTTLE_H_