#ifndef CHROMECAST_BROWSER_GENERAL_AUDIENCE_BROWSING_NAVIGATION_THROTTLE_H_
#define CHROMECAST_BROWSER_GENERAL_AUDIENCE_BROWSING_NAVIGATION_THROTTLE_H_
#include "base/memory/weak_ptr.h"
#include "content/public/browser/navigation_throttle.h"
namespace chromecast {
class GeneralAudienceBrowsingService;
class GeneralAudienceBrowsingNavigationThrottle
: public content::NavigationThrottle {
public:
GeneralAudienceBrowsingNavigationThrottle(
content::NavigationThrottleRegistry& registry,
GeneralAudienceBrowsingService* general_audience_browsing_service);
GeneralAudienceBrowsingNavigationThrottle(
const GeneralAudienceBrowsingNavigationThrottle&) = delete;
GeneralAudienceBrowsingNavigationThrottle& operator=(
const GeneralAudienceBrowsingNavigationThrottle&) = delete;
~GeneralAudienceBrowsingNavigationThrottle() override;
ThrottleCheckResult WillStartRequest() override;
ThrottleCheckResult WillRedirectRequest() override;
const char* GetNameForLogging() override;
private:
content::NavigationThrottle::ThrottleCheckResult CheckURL();
void CheckURLCallback(bool is_safe);
GeneralAudienceBrowsingService* general_audience_browsing_service_;
bool deferred_ = false;
bool should_cancel_ = false;
base::WeakPtrFactory<GeneralAudienceBrowsingNavigationThrottle>
weak_ptr_factory_;
};
}
#endif