Index: apps/shell/browser/shell_network_controller_chromeos.cc |
diff --git a/apps/shell/browser/shell_network_controller_chromeos.cc b/apps/shell/browser/shell_network_controller_chromeos.cc |
deleted file mode 100644 |
index 0b66604b4f41312f9c6e6952f6dc22d365443d5e..0000000000000000000000000000000000000000 |
--- a/apps/shell/browser/shell_network_controller_chromeos.cc |
+++ /dev/null |
@@ -1,207 +0,0 @@ |
-// Copyright 2014 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. |
- |
-#include "apps/shell/browser/shell_network_controller_chromeos.h" |
- |
-#include "base/bind.h" |
-#include "base/location.h" |
-#include "base/logging.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/time/time.h" |
-#include "chromeos/network/network_connection_handler.h" |
-#include "chromeos/network/network_handler.h" |
-#include "chromeos/network/network_handler_callbacks.h" |
-#include "chromeos/network/network_state.h" |
-#include "chromeos/network/network_state_handler.h" |
-#include "third_party/cros_system_api/dbus/service_constants.h" |
- |
-namespace apps { |
- |
-namespace { |
- |
-// Frequency at which networks should be scanned when not connected to a network |
-// or when connected to a non-preferred network. |
-const int kScanIntervalSec = 10; |
- |
-void HandleEnableWifiError( |
- const std::string& error_name, |
- scoped_ptr<base::DictionaryValue> error_data) { |
- LOG(WARNING) << "Unable to enable wifi: " << error_name; |
-} |
- |
-// Returns a human-readable name for the network described by |network|. |
-std::string GetNetworkName(const chromeos::NetworkState& network) { |
- return !network.name().empty() ? network.name() : |
- base::StringPrintf("[%s]", network.type().c_str()); |
-} |
- |
-// Returns true if shill is either connected or connecting to a network. |
-bool IsConnectedOrConnecting() { |
- chromeos::NetworkStateHandler* state_handler = |
- chromeos::NetworkHandler::Get()->network_state_handler(); |
- return state_handler->ConnectedNetworkByType( |
- chromeos::NetworkTypePattern::Default()) || |
- state_handler->ConnectingNetworkByType( |
- chromeos::NetworkTypePattern::Default()); |
-} |
- |
-} // namespace |
- |
-ShellNetworkController::ShellNetworkController( |
- const std::string& preferred_network_name) |
- : state_(STATE_IDLE), |
- preferred_network_name_(preferred_network_name), |
- preferred_network_is_active_(false), |
- weak_ptr_factory_(this) { |
- chromeos::NetworkHandler::Initialize(); |
- chromeos::NetworkStateHandler* state_handler = |
- chromeos::NetworkHandler::Get()->network_state_handler(); |
- state_handler->AddObserver(this, FROM_HERE); |
- state_handler->SetTechnologyEnabled( |
- chromeos::NetworkTypePattern::Primitive(shill::kTypeWifi), |
- true, base::Bind(&HandleEnableWifiError)); |
- |
- // If we're unconnected, trigger a connection attempt and start scanning. |
- NetworkConnectionStateChanged(NULL); |
-} |
- |
-ShellNetworkController::~ShellNetworkController() { |
- chromeos::NetworkHandler::Get()->network_state_handler()->RemoveObserver( |
- this, FROM_HERE); |
- chromeos::NetworkHandler::Shutdown(); |
-} |
- |
-void ShellNetworkController::NetworkListChanged() { |
- VLOG(1) << "Network list changed"; |
- ConnectIfUnconnected(); |
-} |
- |
-void ShellNetworkController::NetworkConnectionStateChanged( |
- const chromeos::NetworkState* network) { |
- if (network) { |
- VLOG(1) << "Network connection state changed:" |
- << " name=" << GetNetworkName(*network) |
- << " type=" << network->type() |
- << " path=" << network->path() |
- << " state=" << network->connection_state(); |
- } else { |
- VLOG(1) << "Network connection state changed: [none]"; |
- } |
- |
- const chromeos::NetworkState* wifi_network = GetActiveWiFiNetwork(); |
- preferred_network_is_active_ = |
- wifi_network && wifi_network->name() == preferred_network_name_; |
- VLOG(2) << "Active WiFi network is " |
- << (wifi_network ? wifi_network->name() : std::string("[none]")); |
- |
- if (preferred_network_is_active_ || |
- (preferred_network_name_.empty() && wifi_network)) { |
- SetScanningEnabled(false); |
- } else { |
- SetScanningEnabled(true); |
- ConnectIfUnconnected(); |
- } |
-} |
- |
-const chromeos::NetworkState* |
-ShellNetworkController::GetActiveWiFiNetwork() { |
- chromeos::NetworkStateHandler* state_handler = |
- chromeos::NetworkHandler::Get()->network_state_handler(); |
- const chromeos::NetworkState* network = state_handler->FirstNetworkByType( |
- chromeos::NetworkTypePattern::Primitive(shill::kTypeWifi)); |
- return network && |
- (network->IsConnectedState() || network->IsConnectingState()) ? |
- network : NULL; |
-} |
- |
-void ShellNetworkController::SetScanningEnabled(bool enabled) { |
- const bool currently_enabled = scan_timer_.IsRunning(); |
- if (enabled == currently_enabled) |
- return; |
- |
- VLOG(1) << (enabled ? "Starting" : "Stopping") << " scanning"; |
- if (enabled) { |
- RequestScan(); |
- scan_timer_.Start(FROM_HERE, |
- base::TimeDelta::FromSeconds(kScanIntervalSec), |
- this, &ShellNetworkController::RequestScan); |
- } else { |
- scan_timer_.Stop(); |
- } |
-} |
- |
-void ShellNetworkController::RequestScan() { |
- VLOG(1) << "Requesting scan"; |
- chromeos::NetworkHandler::Get()->network_state_handler()->RequestScan(); |
-} |
- |
-void ShellNetworkController::ConnectIfUnconnected() { |
- // Don't do anything if the default network is already the preferred one or if |
- // we have a pending request to connect to it. |
- if (preferred_network_is_active_ || |
- state_ == STATE_WAITING_FOR_PREFERRED_RESULT) |
- return; |
- |
- const chromeos::NetworkState* best_network = NULL; |
- bool can_connect_to_preferred_network = false; |
- |
- chromeos::NetworkHandler* handler = chromeos::NetworkHandler::Get(); |
- chromeos::NetworkStateHandler::NetworkStateList network_list; |
- handler->network_state_handler()->GetVisibleNetworkListByType( |
- chromeos::NetworkTypePattern::WiFi(), &network_list); |
- for (chromeos::NetworkStateHandler::NetworkStateList::const_iterator it = |
- network_list.begin(); it != network_list.end(); ++it) { |
- const chromeos::NetworkState* network = *it; |
- if (!network->connectable()) |
- continue; |
- |
- if (!preferred_network_name_.empty() && |
- network->name() == preferred_network_name_) { |
- best_network = network; |
- can_connect_to_preferred_network = true; |
- break; |
- } else if (!best_network) { |
- best_network = network; |
- } |
- } |
- |
- // Don't switch networks if we're already connecting/connected and wouldn't be |
- // switching to the preferred network. |
- if ((IsConnectedOrConnecting() || state_ != STATE_IDLE) && |
- !can_connect_to_preferred_network) |
- return; |
- |
- if (!best_network) { |
- VLOG(1) << "Didn't find any connectable networks"; |
- return; |
- } |
- |
- VLOG(1) << "Connecting to network " << GetNetworkName(*best_network) |
- << " with path " << best_network->path() << " and strength " |
- << best_network->signal_strength(); |
- state_ = can_connect_to_preferred_network ? |
- STATE_WAITING_FOR_PREFERRED_RESULT : |
- STATE_WAITING_FOR_NON_PREFERRED_RESULT; |
- handler->network_connection_handler()->ConnectToNetwork( |
- best_network->path(), |
- base::Bind(&ShellNetworkController::HandleConnectionSuccess, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&ShellNetworkController::HandleConnectionError, |
- weak_ptr_factory_.GetWeakPtr()), |
- false /* check_error_state */); |
-} |
- |
-void ShellNetworkController::HandleConnectionSuccess() { |
- VLOG(1) << "Successfully connected to network"; |
- state_ = STATE_IDLE; |
-} |
- |
-void ShellNetworkController::HandleConnectionError( |
- const std::string& error_name, |
- scoped_ptr<base::DictionaryValue> error_data) { |
- LOG(WARNING) << "Unable to connect to network: " << error_name; |
- state_ = STATE_IDLE; |
-} |
- |
-} // namespace apps |