Landing Recent QUIC changes until 2016-07-02 02:45 UTC

There are no flags to be updated.

Reduce a LOG(WARNING) to a DLOG(WARNING).

Merge internal change: 126469292
https://codereview.chromium.org/2131553002/

Add async variant of ProofSource::GetProof

Merge internal change: 126468067
https://codereview.chromium.org/2125063003/

Require support for X509 certificates in QUIC CHLO PDMDs. Protected by --quic_require_x509

Merge internal change: 126463885
https://codereview.chromium.org/2126053003/

Allow WindowedFilter to use arbitrary time type instead of QuicTime.  No functional change.

Merge internal change: 126432842
https://codereview.chromium.org/2127153002/

Finish the comment in QuicWallTime.

Merge internal change: 126423259
https://codereview.chromium.org/2131543002/

Use small_map instead of unordered_map for storing QUIC streams.

Merge internal change: 126407199
https://codereview.chromium.org/2128253002/

Use overloaded operators with QuicTime for addition, subtraction and scalar
multiplication.  No functional change.

This change removes Add, Subtract and Multiply methods from QuicTime and
QuicTime::Delta and introduces the corresponding overloads for operators "+",
"-" and "*".  They behave in a manner that is "obvious, unsurprising, and
consistent with the corresponding built-in operators".

The goal here is to both to improve code readability, and to allow polymorphism
between QuicTime and integral types in certain contexts.

Merge internal change: 126407046
https://codereview.chromium.org/2125303002/

Deprecate --quic_sslr_limit_reduction.

Merge internal change: 126352469
https://codereview.chromium.org/2124093002/

use std::unique_ptr for the callback argument of QUIC's ProofVerifier::Verify proof to make ownership clear.

Merge internal change: 126331456
https://codereview.chromium.org/2126023002/

Change a LOG(WARNING) to a DLOG(WARNING).  No functional change.

Merge internal change: 126402784
https://codereview.chromium.org/2122313003/

Deprectate --quic_ignore_srbf

Merge internal change: 126400472
https://codereview.chromium.org/2126903002/

refactor quic_dispatcher_test.cc to make test extensible.

Merge internal change: 126327823
https://codereview.chromium.org/2128043002/

Downgrade entering/leaving batch mode log messages to DVLOG(2).

Merge internal change: 126326347
https://codereview.chromium.org/2125163002/

Adds a DebugString method to QuicStreamSequencer.

Merge internal change: 126205965
https://codereview.chromium.org/2129723002/

minor rearrangement of code only.  No functional change intended, not flag-protected.

Merge internal change: 126189095
https://codereview.chromium.org/2125993002/

Deprecate --quic_reply_to_rej.

Merge internal change: 126102870
https://codereview.chromium.org/2129713002/

Adds a QuicUtil::HexDump method that provides better debug output of binary data.

Example output:

  48 65 6c 6c 6f 2c 20 51 55 49 43 21 20 54 68 69  |Hello, QUIC! Thi|
  73 20 73 74 72 69 6e 67 20 73 68 6f 75 6c 64 20  |s string should |
  62 65 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74  |be long enough t|
  6f 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20  |o span multiple |
  6c 69 6e 65 73 20 6f 66 20 6f 75 74 70 75 74 2e  |lines of output.|
  01 02 03 04                                      |....            |

Merge internal change: 126091835
https://codereview.chromium.org/2121293003/

Add a bool demand_x509_proof argument to QuicCryptoClientConfig::FillInchoateClientHello to conditionally add x509 related fields to QUIC CHLOs.

Merge internal change: 126089643
https://codereview.chromium.org/2121383004/

Buffer undecryptable QUIC packets in the Dispatcher when doing cheap stateless rejects.

Protected by --quic_use_cheap_stateless_rejects

Merge internal change: 126002268
https://codereview.chromium.org/2128623002/

Deprecating --quic_cede_correctly

Merge internal change: 125956747
https://codereview.chromium.org/2127983002/

BUG=
[email protected]

Review-Url: https://codereview.chromium.org/2130103002
Cr-Commit-Position: refs/heads/master@{#404315}
diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc
index 096374a..621eb1f 100644
--- a/net/quic/crypto/proof_verifier_chromium.cc
+++ b/net/quic/crypto/proof_verifier_chromium.cc
@@ -76,7 +76,7 @@
       const std::string& signature,
       std::string* error_details,
       std::unique_ptr<ProofVerifyDetails>* verify_details,
-      ProofVerifierCallback* callback);
+      std::unique_ptr<ProofVerifierCallback> callback);
 
  private:
   enum State {
@@ -180,7 +180,7 @@
     const string& signature,
     std::string* error_details,
     std::unique_ptr<ProofVerifyDetails>* verify_details,
-    ProofVerifierCallback* callback) {
+    std::unique_ptr<ProofVerifierCallback> callback) {
   DCHECK(error_details);
   DCHECK(verify_details);
   DCHECK(callback);
@@ -246,7 +246,7 @@
       *verify_details = std::move(verify_details_);
       return QUIC_SUCCESS;
     case ERR_IO_PENDING:
-      callback_.reset(callback);
+      callback_ = std::move(callback);
       return QUIC_PENDING;
     default:
       *error_details = error_details_;
@@ -491,7 +491,7 @@
     const ProofVerifyContext* verify_context,
     std::string* error_details,
     std::unique_ptr<ProofVerifyDetails>* verify_details,
-    ProofVerifierCallback* callback) {
+    std::unique_ptr<ProofVerifierCallback> callback) {
   if (!verify_context) {
     *error_details = "Missing context";
     return QUIC_FAILURE;
@@ -504,7 +504,7 @@
               chromium_context->cert_verify_flags, chromium_context->net_log));
   QuicAsyncStatus status = job->VerifyProof(
       hostname, port, server_config, quic_version, chlo_hash, certs, cert_sct,
-      signature, error_details, verify_details, callback);
+      signature, error_details, verify_details, std::move(callback));
   if (status == QUIC_PENDING) {
     active_jobs_.insert(job.release());
   }