Roll src/net/third_party/quiche/src/ 8eb45e950..63d0bc4ae (20 commits)

https://quiche.googlesource.com/quiche.git/+log/8eb45e950572..63d0bc4ae8dc

$ git log 8eb45e950..63d0bc4ae --date=short --no-merges --format='%ad %ae %s'
2019-05-14 wub gfe-relnote: (n/a) Delete two unused member variables from QuicCryptoServerStream. Not protected.
2019-05-14 fayang gfe-relnote: In QUIC, change string to std::string for detailed_error.
2019-05-14 fayang gfe-relnote: Allow GFE to perform initial cwnd up and down experiment. Protected by --gfe2_reloadable_flag_quic_gfe_selected_initial_cwnd_experiments.
2019-05-13 zhongyi Rename ToDebugValue to ToDebuggingValue() for QuicBandwidth and QuicTime::Delta. This change will make all the logging methods have a consistent name.
2019-05-13 renjietang Skip static streams when destructing QuicSpdySession.
2019-05-13 renjietang Refactor QuicSession to allow subclasses to do their own thing on pending streams.
2019-05-13 quiche-dev QRTP: Implement Datagram Transport
2019-05-13 nharper Don't use a flow controller for QuicCryptoStream when it uses CRYPTO frames
2019-05-13 nharper gfe-relnote: Allow sending CRYPTO frames without full padding. Protected by QUIC_VERSION_99
2019-05-13 nharper gfe-relnote: Delete some dead Token Binding code in QUIC. Not flag protected
2019-05-13 wub gfe-relnote: (n/a) Remove the stateless reject variants from quic/core/http:end_to_end_test.
2019-05-13 dschinazi Deprecate gfe2_reloadable_flag_quic_use_new_append_connection_id
2019-05-13 fayang gfe-relnote: In QUIC, do not use framer object in QuicDispatcher. Protected by gfe2_restart_flag_quic_no_framer_object_in_dispatcher.
2019-05-13 wub gfe-relnote: (n/a) Delete some functions from QuicCryptoServerStream and tests that uses those function. Not protected.
2019-05-13 ianswett Add more logging to the QUIC_BUG when no decrypter is available.
2019-05-13 fayang gfe-relnote: In QUIC, use 2 burst tokens in bootstrapping experiment, protected by gfe2_reloadable_flag_quic_conservative_bursts.
2019-05-11 quiche-dev wdith -> width typo fix on java, cc, proto
2019-05-10 rch gfe-relnote: Deprecate --gfe2_reloadable_flag_quic_enable_version_43
2019-05-10 quiche-dev gfe-relnote: Construct QuicMemSliceSpans from a QuicMemSlices without copies.
2019-05-10 wub gfe-relnote: (n/a) Add QuicBandwidth::IsInfinite(). Not used yet.

Created with:
  roll-dep src/net/third_party/quiche/src src/third_party/quic_trace/src

Change-Id: Ia95ec0a0fe8da95c175bec8880f8a0e1aefdfee4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1611908
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#659976}
diff --git a/DEPS b/DEPS
index 70de389..736f243 100644
--- a/DEPS
+++ b/DEPS
@@ -272,7 +272,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': '8eb45e950572f179000f13d707d6392619e929cb',
+  'quiche_revision': '63d0bc4ae8dcc67502f30c320cdc074c44ea4d89',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
diff --git a/net/BUILD.gn b/net/BUILD.gn
index fa62002..82aa071 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1000,6 +1000,7 @@
       "quic/platform/impl/quic_mem_slice_storage_impl.h",
       "quic/platform/impl/quic_mutex_impl.cc",
       "quic/platform/impl/quic_mutex_impl.h",
+      "quic/platform/impl/quic_optional_impl.h",
       "quic/platform/impl/quic_pcc_sender_impl.h",
       "quic/platform/impl/quic_prefetch_impl.h",
       "quic/platform/impl/quic_ptr_util_impl.h",
diff --git a/net/quic/platform/impl/quic_mem_slice_impl.h b/net/quic/platform/impl/quic_mem_slice_impl.h
index 27ef772..95cddf3 100644
--- a/net/quic/platform/impl/quic_mem_slice_impl.h
+++ b/net/quic/platform/impl/quic_mem_slice_impl.h
@@ -45,6 +45,10 @@
 
   bool empty() const { return length_ == 0; }
 
+  scoped_refptr<net::IOBuffer>* impl() { return &io_buffer_; }
+
+  size_t* impl_length() { return &length_; }
+
  private:
   scoped_refptr<net::IOBuffer> io_buffer_;
   // Length of io_buffer_.
diff --git a/net/quic/platform/impl/quic_mem_slice_span_impl.cc b/net/quic/platform/impl/quic_mem_slice_span_impl.cc
index 606c0d7..a7837f4 100644
--- a/net/quic/platform/impl/quic_mem_slice_span_impl.cc
+++ b/net/quic/platform/impl/quic_mem_slice_span_impl.cc
@@ -8,10 +8,13 @@
 
 QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(
     const scoped_refptr<net::IOBuffer>* buffers,
-    const int* lengths,
+    const size_t* lengths,
     size_t num_buffers)
     : buffers_(buffers), lengths_(lengths), num_buffers_(num_buffers) {}
 
+QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(QuicMemSliceImpl* slice)
+    : QuicMemSliceSpanImpl(slice->impl(), slice->impl_length(), 1) {}
+
 QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(const QuicMemSliceSpanImpl& other) =
     default;
 QuicMemSliceSpanImpl& QuicMemSliceSpanImpl::operator=(
diff --git a/net/quic/platform/impl/quic_mem_slice_span_impl.h b/net/quic/platform/impl/quic_mem_slice_span_impl.h
index 90785fe..ba63a3e 100644
--- a/net/quic/platform/impl/quic_mem_slice_span_impl.h
+++ b/net/quic/platform/impl/quic_mem_slice_span_impl.h
@@ -17,8 +17,9 @@
 class QUIC_EXPORT_PRIVATE QuicMemSliceSpanImpl {
  public:
   QuicMemSliceSpanImpl(const scoped_refptr<net::IOBuffer>* buffers,
-                       const int* lengths,
+                       const size_t* lengths,
                        size_t num_buffers);
+  explicit QuicMemSliceSpanImpl(QuicMemSliceImpl* slice);
 
   QuicMemSliceSpanImpl(const QuicMemSliceSpanImpl& other);
   QuicMemSliceSpanImpl& operator=(const QuicMemSliceSpanImpl& other);
@@ -54,7 +55,7 @@
 
  private:
   const scoped_refptr<net::IOBuffer>* buffers_;
-  const int* lengths_;
+  const size_t* lengths_;
   // Not const so that the move operator can work properly.
   size_t num_buffers_;
 };
diff --git a/net/quic/platform/impl/quic_mem_slice_storage_impl.h b/net/quic/platform/impl/quic_mem_slice_storage_impl.h
index 9987942..9e91fff 100644
--- a/net/quic/platform/impl/quic_mem_slice_storage_impl.h
+++ b/net/quic/platform/impl/quic_mem_slice_storage_impl.h
@@ -35,7 +35,7 @@
 
  private:
   std::vector<scoped_refptr<net::IOBuffer>> buffers_;
-  std::vector<int> lengths_;
+  std::vector<size_t> lengths_;
 };
 
 }  // namespace quic
diff --git a/net/quic/platform/impl/quic_optional_impl.h b/net/quic/platform/impl/quic_optional_impl.h
new file mode 100644
index 0000000..a21af4e
--- /dev/null
+++ b/net/quic/platform/impl/quic_optional_impl.h
@@ -0,0 +1,17 @@
+// Copyright 2019 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 NET_QUIC_PLATFORM_IMPL_QUIC_OPTIONAL_IMPL_H_
+#define NET_QUIC_PLATFORM_IMPL_QUIC_OPTIONAL_IMPL_H_
+
+#include "base/optional.h"
+
+namespace quic {
+
+template <typename T>
+using QuicOptionalImpl = base::Optional<T>;
+
+}  // namespace quic
+
+#endif  // NET_QUIC_PLATFORM_IMPL_QUIC_OPTIONAL_IMPL_H_
diff --git a/net/quic/platform/impl/quic_test_mem_slice_vector_impl.h b/net/quic/platform/impl/quic_test_mem_slice_vector_impl.h
index f256d40..3b2ac14 100644
--- a/net/quic/platform/impl/quic_test_mem_slice_vector_impl.h
+++ b/net/quic/platform/impl/quic_test_mem_slice_vector_impl.h
@@ -34,7 +34,7 @@
 
  private:
   std::vector<scoped_refptr<net::IOBuffer>> buffers_;
-  std::vector<int> lengths_;
+  std::vector<size_t> lengths_;
 };
 
 }  // namespace test
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
index fdeda72..251b304 100644
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -1439,7 +1439,7 @@
     quic::QuicStreamOffset bytes_written) {
   if (quic::QuicUtils::IsServerInitiatedStreamId(
           connection()->transport_version(), id)) {
-    StreamHandler handler = GetOrCreateStreamImpl(id, /*may_buffer=*/true);
+    StreamHandler handler = GetOrCreateStreamImpl(id);
     if (handler.is_pending) {
       bytes_pushed_count_ += handler.pending->stream_bytes_read();
     } else if (handler.stream) {
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h
index aee8b81..91298db 100644
--- a/net/quic/quic_flags_list.h
+++ b/net/quic/quic_flags_list.h
@@ -86,9 +86,6 @@
 // Allow QUIC to accept initial packet numbers that are random, not 1.
 QUIC_FLAG(bool, FLAGS_quic_restart_flag_quic_enable_accept_random_ipn, true)
 
-// If true, enable QUIC v43.
-QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_version_43, true)
-
 // Enables 3 new connection options to make PROBE_RTT more aggressive
 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_bbr_less_probe_rtt, false)
 
@@ -255,12 +252,6 @@
 // If true, use one loss algorithm per encryption level.
 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_use_uber_loss_algorithm, true)
 
-// When true, QuicFramer will use AppendIetfConnectionIdsNew instead of
-// AppendIetfConnectionId.
-QUIC_FLAG(bool,
-          FLAGS_quic_reloadable_flag_quic_use_new_append_connection_id,
-          true)
-
 // If true, QuicStreamSequencerBuffer will switch to a new
 // QuicIntervalSet::AddOptimizedForAppend method in OnStreamData().
 QUIC_FLAG(
@@ -372,3 +363,11 @@
     bool,
     FLAGS_quic_restart_flag_quic_allow_variable_length_connection_id_for_negotiation,
     false)
+
+// If true, set burst token to 2 in cwnd bootstrapping experiment.
+QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_conservative_bursts, false)
+
+// If true, make QuicDispatcher no longer have an instance of QuicFramer.
+QUIC_FLAG(bool,
+          FLAGS_quic_restart_flag_quic_no_framer_object_in_dispatcher,
+          false)