Change QuicStreamFactory::Job to retry a new connection on alternate network.

Change QSF::Job to create a new connection on the alternate network if the original connection fails on the default network before handshake is confirmed.

Bug: 790547
Change-Id: I161c09bf97f98540dd8eb6e83c811ca34d31f883
Reviewed-on: https://chromium-review.googlesource.com/1175191
Reviewed-by: Ryan Hamilton <[email protected]>
Commit-Queue: Ryan Hamilton <[email protected]>
Cr-Commit-Position: refs/heads/master@{#583443}
diff --git a/net/quic/quic_stream_factory.h b/net/quic/quic_stream_factory.h
index ca5e01c..3b4a2cc 100644
--- a/net/quic/quic_stream_factory.h
+++ b/net/quic/quic_stream_factory.h
@@ -242,6 +242,7 @@
       int max_idle_time_before_crypto_handshake_seconds,
       bool migrate_sessions_on_network_change_v2,
       bool migrate_sessions_early_v2,
+      bool retry_on_alternate_network_before_handshake,
       bool go_away_on_path_degrading,
       base::TimeDelta max_time_on_non_default_network,
       int max_migrations_to_non_default_network_on_write_error,
@@ -380,6 +381,10 @@
     return mark_quic_broken_when_network_blackholes_;
   }
 
+  NetworkChangeNotifier::NetworkHandle default_network() const {
+    return default_network_;
+  }
+
   // Dumps memory allocation stats. |parent_dump_absolute_name| is the name
   // used by the parent MemoryAllocatorDump in the memory dump hierarchy.
   void DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd,
@@ -542,6 +547,10 @@
   // connection experiences poor connectivity.
   const bool migrate_sessions_early_v2_;
 
+  // Set if a new connection may be kicked off on an alternate network when a
+  // connection fails on the default network before handshake is confirmed.
+  const bool retry_on_alternate_network_before_handshake_;
+
   // Set if client should mark the session as GOAWAY when the connection
   // experiences poor connectivity
   const bool go_away_on_path_degrading_;