Home | History | Annotate | Download | only in renderer_host
      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 
     10 class SafeBrowsingService;
     11 
     12 namespace content {
     13 class ResourceThrottle;
     14 }
     15 
     16 namespace net {
     17 class URLRequest;
     18 }
     19 
     20 // Factory for creating a SafeBrowsingResourceThrottle. When FULL_SAFE_BROWSING
     21 // is enabled, creates a SafeBrowsingResourceThrottle. When MOBILE_SAFE_BROWSING
     22 // is enabled, the default implementation creates a null resource throttle,
     23 // therefore, a factory has to be registered before using this.
     24 class SafeBrowsingResourceThrottleFactory {
     25  public:
     26 #if defined(MOBILE_SAFE_BROWSING)
     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     factory_ = factory;
     31   }
     32 #endif
     33 
     34   // Creates a new resource throttle for safe browsing
     35   static content::ResourceThrottle* Create(
     36       net::URLRequest* request,
     37       int render_process_host_id,
     38       int render_view_id,
     39       bool is_subresource,
     40       SafeBrowsingService* service);
     41 
     42  protected:
     43   SafeBrowsingResourceThrottleFactory() { }
     44   virtual ~SafeBrowsingResourceThrottleFactory() { }
     45 
     46   virtual content::ResourceThrottle* CreateResourceThrottle(
     47       net::URLRequest* request,
     48       int render_process_host_id,
     49       int render_view_id,
     50       bool is_subresource,
     51       SafeBrowsingService* service) = 0;
     52 
     53  private:
     54   static SafeBrowsingResourceThrottleFactory* factory_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(SafeBrowsingResourceThrottleFactory);
     57 };
     58 
     59 #endif  // CHROME_BROWSER_RENDERER_HOST_SAFE_BROWSING_RESOURCE_THROTTLE_FACTORY_H_
     60