1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_RESOURCE_THROTTLE_H_ 6#define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_RESOURCE_THROTTLE_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/weak_ptr.h" 10#include "chrome/browser/supervised_user/supervised_users.h" 11#include "content/public/browser/resource_throttle.h" 12 13class SupervisedUserURLFilter; 14 15namespace net { 16class URLRequest; 17} 18 19class SupervisedUserResourceThrottle : public content::ResourceThrottle { 20 public: 21 SupervisedUserResourceThrottle(const net::URLRequest* request, 22 bool is_main_frame, 23 const SupervisedUserURLFilter* url_filter); 24 virtual ~SupervisedUserResourceThrottle(); 25 26 // content::ResourceThrottle implementation: 27 virtual void WillStartRequest(bool* defer) OVERRIDE; 28 29 virtual void WillRedirectRequest(const GURL& new_url, bool* defer) OVERRIDE; 30 31 virtual const char* GetNameForLogging() const OVERRIDE; 32 33 private: 34 void ShowInterstitialIfNeeded(bool is_redirect, 35 const GURL& url, 36 bool* defer); 37 void OnInterstitialResult(bool continue_request); 38 39 const net::URLRequest* request_; 40 bool is_main_frame_; 41 const SupervisedUserURLFilter* url_filter_; 42 base::WeakPtrFactory<SupervisedUserResourceThrottle> weak_ptr_factory_; 43 44 DISALLOW_COPY_AND_ASSIGN(SupervisedUserResourceThrottle); 45}; 46 47#endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_RESOURCE_THROTTLE_H_ 48