safe_browsing_resource_throttle_factory.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright (c) 2012 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_RENDERER_HOST_SAFE_BROWSING_RESOURCE_THROTTLE_FACTORY_H_
6#define CHROME_BROWSER_RENDERER_HOST_SAFE_BROWSING_RESOURCE_THROTTLE_FACTORY_H_
7
8#include "base/basictypes.h"
9
10class SafeBrowsingService;
11
12namespace content {
13class ResourceContext;
14class ResourceThrottle;
15}
16
17namespace net {
18class URLRequest;
19}
20
21// Factory for creating a SafeBrowsingResourceThrottle. If a factory is
22// registered, the factory's CreateResourceThrottle() is called.  Otherwise,
23// when FULL_SAFE_BROWSING is enabled, a new SafeBrowsingResourceThrottle is
24// returned, or NULL if MOBILE_SAFE_BROWSING is enabled.
25class SafeBrowsingResourceThrottleFactory {
26 public:
27  // Registers a factory. Does not take the ownership of the factory. The
28  // caller has to make sure the factory stays alive and properly destroyed.
29  static void RegisterFactory(SafeBrowsingResourceThrottleFactory* factory);
30
31  // Creates a new resource throttle for safe browsing
32  static content::ResourceThrottle* Create(
33      net::URLRequest* request,
34      content::ResourceContext* resource_context,
35      bool is_subresource,
36      SafeBrowsingService* service);
37
38 protected:
39  SafeBrowsingResourceThrottleFactory() { }
40  virtual ~SafeBrowsingResourceThrottleFactory() { }
41
42  virtual content::ResourceThrottle* CreateResourceThrottle(
43      net::URLRequest* request,
44      content::ResourceContext* resource_context,
45      bool is_subresource,
46      SafeBrowsingService* service) = 0;
47
48 private:
49  static SafeBrowsingResourceThrottleFactory* factory_;
50
51  DISALLOW_COPY_AND_ASSIGN(SafeBrowsingResourceThrottleFactory);
52};
53
54#endif  // CHROME_BROWSER_RENDERER_HOST_SAFE_BROWSING_RESOURCE_THROTTLE_FACTORY_H_
55