| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/proxy/dhcp_proxy_script_fetcher_win.h" | 5 #include "net/proxy/dhcp_proxy_script_fetcher_win.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 tracked_objects::ScopedTracker tracking_profile1( | 75 tracked_objects::ScopedTracker tracking_profile1( |
| 76 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 76 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 77 "476182 DhcpProxyScriptFetcherWin::Fetch 1")); | 77 "476182 DhcpProxyScriptFetcherWin::Fetch 1")); |
| 78 | 78 |
| 79 DCHECK(CalledOnValidThread()); | 79 DCHECK(CalledOnValidThread()); |
| 80 if (state_ != STATE_START && state_ != STATE_DONE) { | 80 if (state_ != STATE_START && state_ != STATE_DONE) { |
| 81 NOTREACHED(); | 81 NOTREACHED(); |
| 82 return ERR_UNEXPECTED; | 82 return ERR_UNEXPECTED; |
| 83 } | 83 } |
| 84 | 84 |
| 85 if (!url_request_context_) |
| 86 return ERR_CONTEXT_SHUT_DOWN; |
| 87 |
| 85 state_ = STATE_WAIT_ADAPTERS; | 88 state_ = STATE_WAIT_ADAPTERS; |
| 86 callback_ = callback; | 89 callback_ = callback; |
| 87 destination_string_ = utf16_text; | 90 destination_string_ = utf16_text; |
| 88 | 91 |
| 89 last_query_ = ImplCreateAdapterQuery(); | 92 last_query_ = ImplCreateAdapterQuery(); |
| 90 // TODO(joi): Remove ScopedTracker below once crbug.com/476182 is fixed. | 93 // TODO(joi): Remove ScopedTracker below once crbug.com/476182 is fixed. |
| 91 tracked_objects::ScopedTracker tracking_profile2( | 94 tracked_objects::ScopedTracker tracking_profile2( |
| 92 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 95 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 93 "476182 DhcpProxyScriptFetcherWin::Fetch 2")); | 96 "476182 DhcpProxyScriptFetcherWin::Fetch 2")); |
| 94 GetTaskRunner()->PostTaskAndReply( | 97 GetTaskRunner()->PostTaskAndReply( |
| 95 FROM_HERE, | 98 FROM_HERE, |
| 96 base::Bind( | 99 base::Bind( |
| 97 &DhcpProxyScriptFetcherWin::AdapterQuery::GetCandidateAdapterNames, | 100 &DhcpProxyScriptFetcherWin::AdapterQuery::GetCandidateAdapterNames, |
| 98 last_query_.get()), | 101 last_query_.get()), |
| 99 base::Bind( | 102 base::Bind( |
| 100 &DhcpProxyScriptFetcherWin::OnGetCandidateAdapterNamesDone, | 103 &DhcpProxyScriptFetcherWin::OnGetCandidateAdapterNamesDone, |
| 101 AsWeakPtr(), | 104 AsWeakPtr(), |
| 102 last_query_)); | 105 last_query_)); |
| 103 | 106 |
| 104 return ERR_IO_PENDING; | 107 return ERR_IO_PENDING; |
| 105 } | 108 } |
| 106 | 109 |
| 107 void DhcpProxyScriptFetcherWin::Cancel() { | 110 void DhcpProxyScriptFetcherWin::Cancel() { |
| 108 DCHECK(CalledOnValidThread()); | 111 DCHECK(CalledOnValidThread()); |
| 109 | 112 |
| 110 CancelImpl(); | 113 CancelImpl(); |
| 111 } | 114 } |
| 112 | 115 |
| 116 void DhcpProxyScriptFetcherWin::OnShutdown() { |
| 117 DCHECK(CalledOnValidThread()); |
| 118 |
| 119 // Back up callback, if there is one, as CancelImpl() will destroy it. |
| 120 net::CompletionCallback callback = std::move(callback_); |
| 121 |
| 122 // Cancel current request, if there is one. |
| 123 CancelImpl(); |
| 124 |
| 125 // Prevent future network requests. |
| 126 url_request_context_ = nullptr; |
| 127 |
| 128 // Invoke callback with error, if present. |
| 129 if (callback) |
| 130 callback.Run(ERR_CONTEXT_SHUT_DOWN); |
| 131 } |
| 132 |
| 113 void DhcpProxyScriptFetcherWin::CancelImpl() { | 133 void DhcpProxyScriptFetcherWin::CancelImpl() { |
| 114 DCHECK(CalledOnValidThread()); | 134 DCHECK(CalledOnValidThread()); |
| 115 | 135 |
| 116 if (state_ != STATE_DONE) { | 136 if (state_ != STATE_DONE) { |
| 117 callback_.Reset(); | 137 callback_.Reset(); |
| 118 wait_timer_.Stop(); | 138 wait_timer_.Stop(); |
| 119 state_ = STATE_DONE; | 139 state_ = STATE_DONE; |
| 120 | 140 |
| 121 for (FetcherVector::iterator it = fetchers_.begin(); | 141 for (FetcherVector::iterator it = fetchers_.begin(); |
| 122 it != fetchers_.end(); | 142 it != fetchers_.end(); |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 | 394 |
| 375 bool DhcpProxyScriptFetcherWin::AdapterQuery::ImplGetCandidateAdapterNames( | 395 bool DhcpProxyScriptFetcherWin::AdapterQuery::ImplGetCandidateAdapterNames( |
| 376 std::set<std::string>* adapter_names) { | 396 std::set<std::string>* adapter_names) { |
| 377 return DhcpProxyScriptFetcherWin::GetCandidateAdapterNames(adapter_names); | 397 return DhcpProxyScriptFetcherWin::GetCandidateAdapterNames(adapter_names); |
| 378 } | 398 } |
| 379 | 399 |
| 380 DhcpProxyScriptFetcherWin::AdapterQuery::~AdapterQuery() { | 400 DhcpProxyScriptFetcherWin::AdapterQuery::~AdapterQuery() { |
| 381 } | 401 } |
| 382 | 402 |
| 383 } // namespace net | 403 } // namespace net |
| OLD | NEW |