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