Introduce ERR_NETWORK_CHANGED and allow URLFetcher to automatically retry on that error.

BUG=164363

Review URL: https://codereview.chromium.org/11464028

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173227 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index 0880724..3e9cd824d 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -189,7 +189,7 @@
   // Clean up any idle sockets and pending connect jobs.  Assert that we have no
   // remaining active sockets or pending requests.  They should have all been
   // cleaned up prior to |this| being destroyed.
-  Flush();
+  FlushWithError(ERR_ABORTED);
   DCHECK(group_map_.empty());
   DCHECK(pending_callback_map_.empty());
   DCHECK_EQ(0, connecting_socket_count_);
@@ -903,14 +903,14 @@
 }
 
 void ClientSocketPoolBaseHelper::OnIPAddressChanged() {
-  Flush();
+  FlushWithError(ERR_NETWORK_CHANGED);
 }
 
-void ClientSocketPoolBaseHelper::Flush() {
+void ClientSocketPoolBaseHelper::FlushWithError(int error) {
   pool_generation_number_++;
   CancelAllConnectJobs();
   CloseIdleSockets();
-  AbortAllRequests();
+  CancelAllRequestsWithError(error);
 }
 
 bool ClientSocketPoolBaseHelper::IsStalled() const {
@@ -1031,7 +1031,7 @@
   DCHECK_EQ(0, connecting_socket_count_);
 }
 
-void ClientSocketPoolBaseHelper::AbortAllRequests() {
+void ClientSocketPoolBaseHelper::CancelAllRequestsWithError(int error) {
   for (GroupMap::iterator i = group_map_.begin(); i != group_map_.end();) {
     Group* group = i->second;
 
@@ -1041,7 +1041,7 @@
          it2 != pending_requests.end(); ++it2) {
       scoped_ptr<const Request> request(*it2);
       InvokeUserCallbackLater(
-          request->handle(), request->callback(), ERR_ABORTED);
+          request->handle(), request->callback(), error);
     }
 
     // Delete group if no longer needed.