OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/chromeos/net/delay_network_call.h" | 5 #include "chrome/browser/chromeos/net/delay_network_call.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "chrome/browser/chromeos/net/network_portal_detector.h" | 9 #include "chrome/browser/chromeos/net/network_portal_detector.h" |
10 #include "chromeos/network/network_handler.h" | 10 #include "chromeos/network/network_handler.h" |
11 #include "chromeos/network/network_state.h" | 11 #include "chromeos/network/network_state.h" |
12 #include "chromeos/network/network_state_handler.h" | 12 #include "chromeos/network/network_state_handler.h" |
13 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
14 #include "third_party/cros_system_api/dbus/service_constants.h" | 14 #include "third_party/cros_system_api/dbus/service_constants.h" |
15 | 15 |
16 const unsigned chromeos::kDefaultNetworkRetryDelayMS = 3000; | 16 const unsigned chromeos::kDefaultNetworkRetryDelayMS = 3000; |
17 | 17 |
18 void chromeos::DelayNetworkCall(const base::Closure& callback, | 18 void chromeos::DelayNetworkCall(const base::Closure& callback, |
19 base::TimeDelta retry) { | 19 base::TimeDelta retry) { |
20 const NetworkState* default_network = | 20 const NetworkState* default_network = |
21 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); | 21 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
22 bool delay_network_call = !default_network || | 22 bool delay_network_call = !default_network || |
23 !NetworkState::StateIsConnected(default_network->connection_state()); | 23 !NetworkState::StateIsConnected(default_network->connection_state()); |
24 if (!delay_network_call && NetworkPortalDetector::IsInitialized()) { | 24 if (!delay_network_call && NetworkPortalDetector::IsInitialized()) { |
25 NetworkPortalDetector* detector = NetworkPortalDetector::Get(); | 25 NetworkPortalDetector* detector = NetworkPortalDetector::Get(); |
26 if (detector->GetCaptivePortalState(default_network->path()).status != | 26 if (detector->GetCaptivePortalState(default_network->path()).status != |
27 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) | 27 captive_portal::CAPTIVE_PORTAL_STATUS_ONLINE) |
28 delay_network_call = true; | 28 delay_network_call = true; |
29 } | 29 } |
30 if (delay_network_call) { | 30 if (delay_network_call) { |
31 content::BrowserThread::PostDelayedTask( | 31 content::BrowserThread::PostDelayedTask( |
32 content::BrowserThread::UI, | 32 content::BrowserThread::UI, |
33 FROM_HERE, | 33 FROM_HERE, |
34 base::Bind(&chromeos::DelayNetworkCall, callback, retry), | 34 base::Bind(&chromeos::DelayNetworkCall, callback, retry), |
35 retry); | 35 retry); |
36 } else { | 36 } else { |
37 callback.Run(); | 37 callback.Run(); |
38 } | 38 } |
39 } | 39 } |
OLD | NEW |