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