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 CHROME_BROWSER_NET_CHROME_FRAUDULENT_CERTIFICATE_REPORTER_H_ 6#define CHROME_BROWSER_NET_CHROME_FRAUDULENT_CERTIFICATE_REPORTER_H_ 7 8#include <set> 9#include <string> 10 11#include "net/url_request/fraudulent_certificate_reporter.h" 12#include "net/url_request/url_request.h" 13 14namespace net { 15class URLRequestContext; 16} 17 18namespace chrome_browser_net { 19 20class ChromeFraudulentCertificateReporter 21 : public net::FraudulentCertificateReporter, 22 public net::URLRequest::Delegate { 23 public: 24 explicit ChromeFraudulentCertificateReporter( 25 net::URLRequestContext* request_context); 26 27 virtual ~ChromeFraudulentCertificateReporter(); 28 29 // Allows users of this class to override this and set their own URLRequest 30 // type. Used by SendReport. 31 virtual scoped_ptr<net::URLRequest> CreateURLRequest( 32 net::URLRequestContext* context); 33 34 // net::FraudulentCertificateReporter 35 virtual void SendReport(const std::string& hostname, 36 const net::SSLInfo& ssl_info) OVERRIDE; 37 38 // net::URLRequest::Delegate 39 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE; 40 virtual void OnReadCompleted(net::URLRequest* request, 41 int bytes_read) OVERRIDE; 42 43 protected: 44 net::URLRequestContext* const request_context_; 45 46 private: 47 // Performs post-report cleanup. 48 void RequestComplete(net::URLRequest* request); 49 50 const GURL upload_url_; 51 // Owns the contained requests. 52 std::set<net::URLRequest*> inflight_requests_; 53 54 DISALLOW_COPY_AND_ASSIGN(ChromeFraudulentCertificateReporter); 55}; 56 57} // namespace chrome_browser_net 58 59#endif // CHROME_BROWSER_NET_CHROME_FRAUDULENT_CERTIFICATE_REPORTER_H_ 60 61