url_request_job_factory_impl.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright (c) 2011 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 NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_IMPL_H_ 6#define NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_IMPL_H_ 7 8#include <map> 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/compiler_specific.h" 13#include "net/base/net_export.h" 14#include "net/url_request/url_request_job_factory.h" 15 16namespace net { 17 18class NET_EXPORT URLRequestJobFactoryImpl : public URLRequestJobFactory { 19 public: 20 URLRequestJobFactoryImpl(); 21 virtual ~URLRequestJobFactoryImpl(); 22 23 // Sets the ProtocolHandler for a scheme. Returns true on success, false on 24 // failure (a ProtocolHandler already exists for |scheme|). On success, 25 // URLRequestJobFactory takes ownership of |protocol_handler|. 26 bool SetProtocolHandler(const std::string& scheme, 27 ProtocolHandler* protocol_handler); 28 29 // URLRequestJobFactory implementation 30 virtual URLRequestJob* MaybeCreateJobWithProtocolHandler( 31 const std::string& scheme, 32 URLRequest* request, 33 NetworkDelegate* network_delegate) const OVERRIDE; 34 virtual bool IsHandledProtocol(const std::string& scheme) const OVERRIDE; 35 virtual bool IsHandledURL(const GURL& url) const OVERRIDE; 36 virtual bool IsSafeRedirectTarget(const GURL& location) const OVERRIDE; 37 38 private: 39 typedef std::map<std::string, ProtocolHandler*> ProtocolHandlerMap; 40 41 ProtocolHandlerMap protocol_handler_map_; 42 43 DISALLOW_COPY_AND_ASSIGN(URLRequestJobFactoryImpl); 44}; 45 46} // namespace net 47 48#endif // NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_IMPL_H_ 49