| Index: chrome/browser/net/chrome_fraudulent_certificate_reporter.h
|
| ===================================================================
|
| --- chrome/browser/net/chrome_fraudulent_certificate_reporter.h (revision 0)
|
| +++ chrome/browser/net/chrome_fraudulent_certificate_reporter.h (revision 0)
|
| @@ -0,0 +1,61 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_NET_CHROME_FRAUDULENT_CERTIFICATE_REPORTER_H_
|
| +#define CHROME_BROWSER_NET_CHROME_FRAUDULENT_CERTIFICATE_REPORTER_H_
|
| +#pragma once
|
| +
|
| +#include <set>
|
| +#include <string>
|
| +
|
| +#include "net/url_request/fraudulent_certificate_reporter.h"
|
| +#include "net/url_request/url_request.h"
|
| +
|
| +namespace chrome_browser_net {
|
| +
|
| +// TODO(palmer): Switch to HTTPS when the error handling delegate is more
|
| +// sophisticated. Ultimately we plan to attempt the report on many transports.
|
| +const char FRAUDULENT_CERTIFICATE_UPLOAD_ENDPOINT[] =
|
| + "http://clients3.google.com/log_cert_error";
|
| +
|
| +class ChromeFraudulentCertificateReporter
|
| + : public net::FraudulentCertificateReporter,
|
| + public net::URLRequest::Delegate {
|
| + public:
|
| + explicit ChromeFraudulentCertificateReporter(
|
| + net::URLRequestContext* request_context);
|
| +
|
| + virtual ~ChromeFraudulentCertificateReporter();
|
| +
|
| + // Allows users of this class to override this and set their own URLRequest
|
| + // type. Used by SendReport.
|
| + virtual net::URLRequest* CreateURLRequest();
|
| +
|
| + // net::FraudulentCertificateReporter
|
| + virtual void SendReport(const std::string& hostname,
|
| + const net::SSLInfo& ssl_info,
|
| + bool sni_available) OVERRIDE;
|
| +
|
| + // net::URLRequest::Delegate
|
| + virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE;
|
| + virtual void OnReadCompleted(net::URLRequest* request,
|
| + int bytes_read) OVERRIDE;
|
| +
|
| + protected:
|
| + net::URLRequestContext* const request_context_;
|
| +
|
| + private:
|
| + // Performs post-report cleanup.
|
| + void RequestComplete(net::URLRequest* request);
|
| +
|
| + const GURL upload_url_;
|
| + std::set<net::URLRequest*> inflight_requests_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ChromeFraudulentCertificateReporter);
|
| +};
|
| +
|
| +} // namespace chrome_browser_net
|
| +
|
| +#endif // CHROME_BROWSER_NET_CHROME_FRAUDULENT_CERTIFICATE_REPORTER_H_
|
| +
|
|
|