Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(588)

Unified Diff: ash/system/chromeos/network/network_connect.cc

Issue 673713003: Create a NetworkConnect class and Delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More virtual fixes Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/system/chromeos/network/network_connect.cc
diff --git a/ash/system/chromeos/network/network_connect.cc b/ash/system/chromeos/network/network_connect.cc
index 1647546a453ab75b9bfa5d5735b6f2a4928bccc9..82c80f58fba4afe89d4b4cc70103c3571e8bb71f 100644
--- a/ash/system/chromeos/network/network_connect.cc
+++ b/ash/system/chromeos/network/network_connect.cc
@@ -4,12 +4,7 @@
#include "ash/system/chromeos/network/network_connect.h"
-#include "ash/session/session_state_delegate.h"
-#include "ash/shell.h"
#include "ash/system/chromeos/network/network_state_notifier.h"
-#include "ash/system/system_notifier.h"
-#include "ash/system/tray/system_tray_delegate.h"
-#include "ash/system/tray/system_tray_notifier.h"
#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string_util.h"
@@ -48,9 +43,6 @@ namespace ash {
namespace {
-// TODO(stevenjb): This should be in service_constants.h
-const char kErrorInProgress[] = "org.chromium.flimflam.Error.InProgress";
-
// Returns true for carriers that can be activated through Shill instead of
// through a WebUI dialog.
bool IsDirectActivatedCarrier(const std::string& carrier) {
@@ -59,15 +51,84 @@ bool IsDirectActivatedCarrier(const std::string& carrier) {
return false;
}
-void ShowErrorNotification(const std::string& error_name,
- const std::string& service_path) {
- Shell::GetInstance()->system_tray_notifier()->network_state_notifier()->
- ShowNetworkConnectError(error_name, service_path);
+const NetworkState* GetNetworkState(const std::string& service_path) {
+ return NetworkHandler::Get()->network_state_handler()->GetNetworkState(
+ service_path);
+}
+
+class NetworkConnectImpl : public NetworkConnect {
+ public:
+ explicit NetworkConnectImpl(Delegate* delegate);
+ ~NetworkConnectImpl() override;
+
+ // NetworkConnect
+ void ConnectToNetwork(const std::string& service_path) override;
+ void SetTechnologyEnabled(const chromeos::NetworkTypePattern& technology,
+ bool enabled_state) override;
+ void ActivateCellular(const std::string& service_path) override;
+ void ShowMobileSetup(const std::string& service_path) override;
+ void ConfigureNetworkAndConnect(const std::string& service_path,
+ const base::DictionaryValue& properties,
+ bool shared) override;
+ void CreateConfigurationAndConnect(base::DictionaryValue* properties,
+ bool shared) override;
+ void CreateConfiguration(base::DictionaryValue* properties,
+ bool shared) override;
+ base::string16 GetErrorString(const std::string& error,
+ const std::string& service_path) override;
+ void ShowNetworkSettings(const std::string& service_path) override;
+
+ private:
+ void HandleUnconfiguredNetwork(const std::string& service_path);
+ void OnConnectFailed(const std::string& service_path,
+ const std::string& error_name,
+ scoped_ptr<base::DictionaryValue> error_data);
+ bool GetNetworkProfilePath(bool shared, std::string* profile_path);
+ void OnConnectSucceeded(const std::string& service_path);
+ void CallConnectToNetwork(const std::string& service_path,
+ bool check_error_state);
+ void OnActivateFailed(const std::string& service_path,
+ const std::string& error_name,
+ scoped_ptr<base::DictionaryValue> error_data);
+ void OnActivateSucceeded(const std::string& service_path);
+ void OnConfigureFailed(const std::string& error_name,
+ scoped_ptr<base::DictionaryValue> error_data);
+ void OnConfigureSucceeded(bool connect_on_configure,
+ const std::string& service_path);
+ void CallCreateConfiguration(base::DictionaryValue* properties,
+ bool shared,
+ bool connect_on_configure);
+ void SetPropertiesFailed(const std::string& desc,
+ const std::string& service_path,
+ const std::string& config_error_name,
+ scoped_ptr<base::DictionaryValue> error_data);
+ void SetPropertiesToClear(base::DictionaryValue* properties_to_set,
+ std::vector<std::string>* properties_to_clear);
+ void ClearPropertiesAndConnect(
+ const std::string& service_path,
+ const std::vector<std::string>& properties_to_clear);
+ void ConfigureSetProfileSucceeded(
+ const std::string& service_path,
+ scoped_ptr<base::DictionaryValue> properties_to_set);
+
+ Delegate* delegate_;
+ scoped_ptr<NetworkStateNotifier> network_state_notifier_;
+ base::WeakPtrFactory<NetworkConnectImpl> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkConnectImpl);
+};
+
+NetworkConnectImpl::NetworkConnectImpl(Delegate* delegate)
+ : delegate_(delegate), weak_factory_(this) {
+ network_state_notifier_.reset(new NetworkStateNotifier(this));
+}
+
+NetworkConnectImpl::~NetworkConnectImpl() {
}
-void HandleUnconfiguredNetwork(const std::string& service_path) {
- const NetworkState* network = NetworkHandler::Get()->network_state_handler()->
- GetNetworkState(service_path);
+void NetworkConnectImpl::HandleUnconfiguredNetwork(
+ const std::string& service_path) {
+ const NetworkState* network = GetNetworkState(service_path);
if (!network) {
NET_LOG_ERROR("Configuring unknown network", service_path);
return;
@@ -76,32 +137,29 @@ void HandleUnconfiguredNetwork(const std::string& service_path) {
if (network->type() == shill::kTypeWifi) {
// Only show the config view for secure networks, otherwise do nothing.
if (network->security() != shill::kSecurityNone) {
- ash::Shell::GetInstance()->system_tray_delegate()->
- ShowNetworkConfigure(service_path);
+ delegate_->ShowNetworkConfigure(service_path);
}
return;
}
if (network->type() == shill::kTypeWimax ||
network->type() == shill::kTypeVPN) {
- ash::Shell::GetInstance()->system_tray_delegate()->
- ShowNetworkConfigure(service_path);
+ delegate_->ShowNetworkConfigure(service_path);
return;
}
if (network->type() == shill::kTypeCellular) {
if (network->RequiresActivation()) {
- ash::network_connect::ActivateCellular(service_path);
+ ActivateCellular(service_path);
return;
}
if (network->cellular_out_of_credits()) {
- ash::network_connect::ShowMobileSetup(service_path);
+ ShowMobileSetup(service_path);
return;
}
// No special configure or setup for |network|, show the settings UI.
if (chromeos::LoginState::Get()->IsUserLoggedIn()) {
- ash::Shell::GetInstance()->system_tray_delegate()->
- ShowNetworkSettings(service_path);
+ delegate_->ShowNetworkSettings(service_path);
}
return;
}
@@ -111,7 +169,8 @@ void HandleUnconfiguredNetwork(const std::string& service_path) {
// If |shared| is true, sets |profile_path| to the shared profile path.
// Otherwise sets |profile_path| to the user profile path if authenticated and
// available. Returns 'false' if unable to set |profile_path|.
-bool GetNetworkProfilePath(bool shared, std::string* profile_path) {
+bool NetworkConnectImpl::GetNetworkProfilePath(bool shared,
+ std::string* profile_path) {
if (shared) {
*profile_path = NetworkProfileHandler::GetSharedProfilePath();
return true;
@@ -122,9 +181,8 @@ bool GetNetworkProfilePath(bool shared, std::string* profile_path) {
return false;
}
- const NetworkProfile* profile =
- NetworkHandler::Get()->network_profile_handler()->
- GetDefaultUserProfile();
+ const NetworkProfile* profile =
+ NetworkHandler::Get()->network_profile_handler()->GetDefaultUserProfile();
if (!profile) {
NET_LOG_ERROR("No user profile for unshared network configuration", "");
return false;
@@ -134,15 +192,14 @@ bool GetNetworkProfilePath(bool shared, std::string* profile_path) {
return true;
}
-void OnConnectFailed(const std::string& service_path,
- const std::string& error_name,
- scoped_ptr<base::DictionaryValue> error_data) {
+void NetworkConnectImpl::OnConnectFailed(
+ const std::string& service_path,
+ const std::string& error_name,
+ scoped_ptr<base::DictionaryValue> error_data) {
NET_LOG_ERROR("Connect Failed: " + error_name, service_path);
- if (!ash::Shell::HasInstance())
- return;
-
- // If a new connect attempt canceled this connect, no need to notify the user.
+ // If a new connect attempt canceled this connect, no need to notify the
+ // user.
if (error_name == NetworkConnectionHandler::kErrorConnectCanceled)
return;
@@ -155,88 +212,82 @@ void OnConnectFailed(const std::string& service_path,
}
if (error_name == NetworkConnectionHandler::kErrorCertificateRequired) {
- if (!ash::Shell::GetInstance()->system_tray_delegate()->EnrollNetwork(
- service_path)) {
+ if (!delegate_->ShowEnrollNetwork(service_path)) {
HandleUnconfiguredNetwork(service_path);
}
return;
}
if (error_name == NetworkConnectionHandler::kErrorActivationRequired) {
- network_connect::ActivateCellular(service_path);
+ ActivateCellular(service_path);
return;
}
if (error_name == NetworkConnectionHandler::kErrorConnected ||
error_name == NetworkConnectionHandler::kErrorConnecting) {
- network_connect::ShowNetworkSettings(service_path);
+ ShowNetworkSettings(service_path);
return;
}
// ConnectFailed or unknown error; show a notification.
- ShowErrorNotification(error_name, service_path);
+ network_state_notifier_->ShowNetworkConnectError(error_name, service_path);
- // Only show a configure dialog if there was a ConnectFailed error and the
- // screen is not locked.
- if (error_name != shill::kErrorConnectFailed ||
- Shell::GetInstance()->session_state_delegate()->IsScreenLocked())
+ // Only show a configure dialog if there was a ConnectFailed error.
+ if (error_name != shill::kErrorConnectFailed)
return;
// If Shill reports an InProgress error, don't try to configure the network.
std::string dbus_error_name;
- error_data.get()->GetString(
- chromeos::network_handler::kDbusErrorName, &dbus_error_name);
- if (dbus_error_name == kErrorInProgress)
+ error_data.get()->GetString(chromeos::network_handler::kDbusErrorName,
+ &dbus_error_name);
+ if (dbus_error_name == shill::kErrorResultInProgress)
return;
HandleUnconfiguredNetwork(service_path);
}
-void OnConnectSucceeded(const std::string& service_path) {
+void NetworkConnectImpl::OnConnectSucceeded(const std::string& service_path) {
NET_LOG_USER("Connect Succeeded", service_path);
- if (!ash::Shell::HasInstance())
- return;
- message_center::MessageCenter::Get()->RemoveNotification(
- network_connect::kNetworkConnectNotificationId, false /* not by user */);
+ network_state_notifier_->RemoveConnectNotification();
}
// If |check_error_state| is true, error state for the network is checked,
// otherwise any current error state is ignored (e.g. for recently configured
// networks or repeat connect attempts).
-void CallConnectToNetwork(const std::string& service_path,
- bool check_error_state) {
- if (message_center::MessageCenter::Get()) {
- message_center::MessageCenter::Get()->RemoveNotification(
- network_connect::kNetworkConnectNotificationId,
- false /* not by user */);
- }
-
+void NetworkConnectImpl::CallConnectToNetwork(const std::string& service_path,
+ bool check_error_state) {
+ network_state_notifier_->RemoveConnectNotification();
NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork(
- service_path,
- base::Bind(&OnConnectSucceeded, service_path),
- base::Bind(&OnConnectFailed, service_path),
+ service_path, base::Bind(&NetworkConnectImpl::OnConnectSucceeded,
+ weak_factory_.GetWeakPtr(), service_path),
+ base::Bind(&NetworkConnectImpl::OnConnectFailed,
+ weak_factory_.GetWeakPtr(), service_path),
check_error_state);
}
-void OnActivateFailed(const std::string& service_path,
- const std::string& error_name,
- scoped_ptr<base::DictionaryValue> error_data) {
+void NetworkConnectImpl::OnActivateFailed(
+ const std::string& service_path,
+ const std::string& error_name,
+ scoped_ptr<base::DictionaryValue> error_data) {
NET_LOG_ERROR("Unable to activate network", service_path);
- ShowErrorNotification(network_connect::kErrorActivateFailed, service_path);
+ network_state_notifier_->ShowNetworkConnectError(kErrorActivateFailed,
+ service_path);
}
-void OnActivateSucceeded(const std::string& service_path) {
+void NetworkConnectImpl::OnActivateSucceeded(const std::string& service_path) {
NET_LOG_USER("Activation Succeeded", service_path);
}
-void OnConfigureFailed(const std::string& error_name,
- scoped_ptr<base::DictionaryValue> error_data) {
+void NetworkConnectImpl::OnConfigureFailed(
+ const std::string& error_name,
+ scoped_ptr<base::DictionaryValue> error_data) {
NET_LOG_ERROR("Unable to configure network", "");
- ShowErrorNotification(NetworkConnectionHandler::kErrorConfigureFailed, "");
+ network_state_notifier_->ShowNetworkConnectError(
+ NetworkConnectionHandler::kErrorConfigureFailed, "");
}
-void OnConfigureSucceeded(bool connect_on_configure,
- const std::string& service_path) {
+void NetworkConnectImpl::OnConfigureSucceeded(bool connect_on_configure,
+ const std::string& service_path) {
NET_LOG_USER("Configure Succeeded", service_path);
if (!connect_on_configure)
return;
@@ -245,33 +296,38 @@ void OnConfigureSucceeded(bool connect_on_configure,
CallConnectToNetwork(service_path, check_error_state);
}
-void CallCreateConfiguration(base::DictionaryValue* properties,
- bool shared,
- bool connect_on_configure) {
+void NetworkConnectImpl::CallCreateConfiguration(
+ base::DictionaryValue* properties,
+ bool shared,
+ bool connect_on_configure) {
std::string profile_path;
if (!GetNetworkProfilePath(shared, &profile_path)) {
- ShowErrorNotification(NetworkConnectionHandler::kErrorConfigureFailed, "");
+ network_state_notifier_->ShowNetworkConnectError(
+ NetworkConnectionHandler::kErrorConfigureFailed, "");
return;
}
- properties->SetStringWithoutPathExpansion(
- shill::kProfileProperty, profile_path);
+ properties->SetStringWithoutPathExpansion(shill::kProfileProperty,
+ profile_path);
NetworkHandler::Get()->network_configuration_handler()->CreateConfiguration(
- *properties,
- base::Bind(&OnConfigureSucceeded, connect_on_configure),
- base::Bind(&OnConfigureFailed));
+ *properties, base::Bind(&NetworkConnectImpl::OnConfigureSucceeded,
+ weak_factory_.GetWeakPtr(), connect_on_configure),
+ base::Bind(&NetworkConnectImpl::OnConfigureFailed,
+ weak_factory_.GetWeakPtr()));
}
-void SetPropertiesFailed(const std::string& desc,
- const std::string& service_path,
- const std::string& config_error_name,
- scoped_ptr<base::DictionaryValue> error_data) {
+void NetworkConnectImpl::SetPropertiesFailed(
+ const std::string& desc,
+ const std::string& service_path,
+ const std::string& config_error_name,
+ scoped_ptr<base::DictionaryValue> error_data) {
NET_LOG_ERROR(desc + ": Failed: " + config_error_name, service_path);
- ShowErrorNotification(
+ network_state_notifier_->ShowNetworkConnectError(
NetworkConnectionHandler::kErrorConfigureFailed, service_path);
}
-void SetPropertiesToClear(base::DictionaryValue* properties_to_set,
- std::vector<std::string>* properties_to_clear) {
+void NetworkConnectImpl::SetPropertiesToClear(
+ base::DictionaryValue* properties_to_set,
+ std::vector<std::string>* properties_to_clear) {
// Move empty string properties to properties_to_clear.
for (base::DictionaryValue::Iterator iter(*properties_to_set);
!iter.IsAtEnd(); iter.Advance()) {
@@ -286,58 +342,43 @@ void SetPropertiesToClear(base::DictionaryValue* properties_to_set,
}
}
-void ClearPropertiesAndConnect(
+void NetworkConnectImpl::ClearPropertiesAndConnect(
const std::string& service_path,
const std::vector<std::string>& properties_to_clear) {
NET_LOG_USER("ClearPropertiesAndConnect", service_path);
// After configuring a network, ignore any (possibly stale) error state.
const bool check_error_state = false;
NetworkHandler::Get()->network_configuration_handler()->ClearProperties(
- service_path,
- properties_to_clear,
- base::Bind(&CallConnectToNetwork,
- service_path, check_error_state),
- base::Bind(&SetPropertiesFailed, "ClearProperties", service_path));
+ service_path, properties_to_clear,
+ base::Bind(&NetworkConnectImpl::CallConnectToNetwork,
+ weak_factory_.GetWeakPtr(), service_path, check_error_state),
+ base::Bind(&NetworkConnectImpl::SetPropertiesFailed,
+ weak_factory_.GetWeakPtr(), "ClearProperties", service_path));
}
-void ConfigureSetProfileSucceeded(
+void NetworkConnectImpl::ConfigureSetProfileSucceeded(
const std::string& service_path,
scoped_ptr<base::DictionaryValue> properties_to_set) {
std::vector<std::string> properties_to_clear;
SetPropertiesToClear(properties_to_set.get(), &properties_to_clear);
NetworkHandler::Get()->network_configuration_handler()->SetProperties(
- service_path,
- *properties_to_set,
- base::Bind(&ClearPropertiesAndConnect,
- service_path,
- properties_to_clear),
- base::Bind(&SetPropertiesFailed, "SetProperties", service_path));
+ service_path, *properties_to_set,
+ base::Bind(&NetworkConnectImpl::ClearPropertiesAndConnect,
+ weak_factory_.GetWeakPtr(), service_path, properties_to_clear),
+ base::Bind(&NetworkConnectImpl::SetPropertiesFailed,
+ weak_factory_.GetWeakPtr(), "SetProperties", service_path));
}
-const NetworkState* GetNetworkState(const std::string& service_path) {
- return NetworkHandler::Get()->network_state_handler()->
- GetNetworkState(service_path);
-}
+// Public methods
-} // namespace
-
-namespace network_connect {
-
-const char kNetworkConnectNotificationId[] =
- "chrome://settings/internet/connect";
-const char kNetworkActivateNotificationId[] =
- "chrome://settings/internet/activate";
-
-const char kErrorActivateFailed[] = "activate-failed";
-
-void ConnectToNetwork(const std::string& service_path) {
+void NetworkConnectImpl::ConnectToNetwork(const std::string& service_path) {
NET_LOG_USER("ConnectToNetwork", service_path);
const NetworkState* network = GetNetworkState(service_path);
if (network) {
if (!network->error().empty() && !network->security().empty()) {
NET_LOG_USER("Configure: " + network->error(), service_path);
- // If the network is in an error state, show the configuration UI directly
- // to avoid a spurious notification.
+ // If the network is in an error state, show the configuration UI
+ // directly to avoid a spurious notification.
HandleUnconfiguredNetwork(service_path);
return;
} else if (network->RequiresActivation()) {
@@ -349,12 +390,12 @@ void ConnectToNetwork(const std::string& service_path) {
CallConnectToNetwork(service_path, check_error_state);
}
-void SetTechnologyEnabled(const NetworkTypePattern& technology,
- bool enabled_state) {
- std::string log_string =
- base::StringPrintf("technology %s, target state: %s",
- technology.ToDebugString().c_str(),
- (enabled_state ? "ENABLED" : "DISABLED"));
+void NetworkConnectImpl::SetTechnologyEnabled(
+ const NetworkTypePattern& technology,
+ bool enabled_state) {
+ std::string log_string = base::StringPrintf(
+ "technology %s, target state: %s", technology.ToDebugString().c_str(),
+ (enabled_state ? "ENABLED" : "DISABLED"));
NET_LOG_USER("SetTechnologyEnabled", log_string);
NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
bool enabled = handler->IsTechnologyEnabled(technology);
@@ -364,8 +405,8 @@ void SetTechnologyEnabled(const NetworkTypePattern& technology,
}
if (enabled) {
// User requested to disable the technology.
- handler->SetTechnologyEnabled(
- technology, false, chromeos::network_handler::ErrorCallback());
+ handler->SetTechnologyEnabled(technology, false,
+ chromeos::network_handler::ErrorCallback());
return;
}
// If we're dealing with a mobile network, then handle SIM lock here.
@@ -380,27 +421,26 @@ void SetTechnologyEnabled(const NetworkTypePattern& technology,
// The following only applies to cellular.
if (mobile->type() == shill::kTypeCellular) {
if (mobile->IsSimAbsent()) {
- // If this is true, then we have a cellular device with no SIM inserted.
- // TODO(armansito): Chrome should display a notification here, prompting
- // the user to insert a SIM card and restart the device to enable
- // cellular. See crbug.com/125171.
+ // If this is true, then we have a cellular device with no SIM
+ // inserted. TODO(armansito): Chrome should display a notification here,
+ // prompting the user to insert a SIM card and restart the device to
+ // enable cellular. See crbug.com/125171.
NET_LOG_USER("Cannot enable cellular device without SIM.", log_string);
return;
}
if (!mobile->sim_lock_type().empty()) {
// A SIM has been inserted, but it is locked. Let the user unlock it
// via the dialog.
- ash::Shell::GetInstance()->system_tray_delegate()->
- ShowMobileSimDialog();
+ delegate_->ShowMobileSimDialog();
return;
}
}
}
- handler->SetTechnologyEnabled(
- technology, true, chromeos::network_handler::ErrorCallback());
+ handler->SetTechnologyEnabled(technology, true,
+ chromeos::network_handler::ErrorCallback());
}
-void ActivateCellular(const std::string& service_path) {
+void NetworkConnectImpl::ActivateCellular(const std::string& service_path) {
NET_LOG_USER("ActivateCellular", service_path);
const NetworkState* cellular = GetNetworkState(service_path);
if (!cellular || cellular->type() != shill::kTypeCellular) {
@@ -408,8 +448,8 @@ void ActivateCellular(const std::string& service_path) {
return;
}
const DeviceState* cellular_device =
- NetworkHandler::Get()->network_state_handler()->
- GetDeviceState(cellular->device_path());
+ NetworkHandler::Get()->network_state_handler()->GetDeviceState(
+ cellular->device_path());
if (!cellular_device) {
NET_LOG_ERROR("ActivateCellular with no Device", service_path);
return;
@@ -428,11 +468,13 @@ void ActivateCellular(const std::string& service_path) {
NetworkHandler::Get()->network_activation_handler()->Activate(
service_path,
"", // carrier
- base::Bind(&OnActivateSucceeded, service_path),
- base::Bind(&OnActivateFailed, service_path));
+ base::Bind(&NetworkConnectImpl::OnActivateSucceeded,
+ weak_factory_.GetWeakPtr(), service_path),
+ base::Bind(&NetworkConnectImpl::OnActivateFailed,
+ weak_factory_.GetWeakPtr(), service_path));
}
-void ShowMobileSetup(const std::string& service_path) {
+void NetworkConnectImpl::ShowMobileSetup(const std::string& service_path) {
NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
const NetworkState* cellular = handler->GetNetworkState(service_path);
if (!cellular || cellular->type() != shill::kTypeCellular) {
@@ -442,57 +484,52 @@ void ShowMobileSetup(const std::string& service_path) {
if (cellular->activation_state() != shill::kActivationStateActivated &&
cellular->activation_type() == shill::kActivationTypeNonCellular &&
!handler->DefaultNetwork()) {
- message_center::MessageCenter::Get()->AddNotification(
- message_center::Notification::CreateSystemNotification(
- kNetworkActivateNotificationId,
- l10n_util::GetStringUTF16(IDS_NETWORK_ACTIVATION_ERROR_TITLE),
- l10n_util::GetStringFUTF16(IDS_NETWORK_ACTIVATION_NEEDS_CONNECTION,
- base::UTF8ToUTF16(cellular->name())),
- ui::ResourceBundle::GetSharedInstance().GetImageNamed(
- IDR_AURA_UBER_TRAY_CELLULAR_NETWORK_FAILED),
- ash::system_notifier::kNotifierNetworkError,
- base::Bind(&ash::network_connect::ShowNetworkSettings,
- service_path)));
+ network_state_notifier_->ShowMobileActivationError(service_path);
return;
}
- ash::Shell::GetInstance()->system_tray_delegate()->ShowMobileSetupDialog(
- service_path);
+ delegate_->ShowMobileSetupDialog(service_path);
}
-void ConfigureNetworkAndConnect(const std::string& service_path,
- const base::DictionaryValue& properties,
- bool shared) {
+void NetworkConnectImpl::ConfigureNetworkAndConnect(
+ const std::string& service_path,
+ const base::DictionaryValue& properties,
+ bool shared) {
NET_LOG_USER("ConfigureNetworkAndConnect", service_path);
scoped_ptr<base::DictionaryValue> properties_to_set(properties.DeepCopy());
std::string profile_path;
if (!GetNetworkProfilePath(shared, &profile_path)) {
- ShowErrorNotification(
+ network_state_notifier_->ShowNetworkConnectError(
NetworkConnectionHandler::kErrorConfigureFailed, service_path);
return;
}
NetworkHandler::Get()->network_configuration_handler()->SetNetworkProfile(
service_path, profile_path,
- base::Bind(&ConfigureSetProfileSucceeded,
- service_path, base::Passed(&properties_to_set)),
- base::Bind(&SetPropertiesFailed,
- "SetProfile: " + profile_path, service_path));
+ base::Bind(&NetworkConnectImpl::ConfigureSetProfileSucceeded,
+ weak_factory_.GetWeakPtr(), service_path,
+ base::Passed(&properties_to_set)),
+ base::Bind(&NetworkConnectImpl::SetPropertiesFailed,
+ weak_factory_.GetWeakPtr(), "SetProfile: " + profile_path,
+ service_path));
}
-void CreateConfigurationAndConnect(base::DictionaryValue* properties,
- bool shared) {
+void NetworkConnectImpl::CreateConfigurationAndConnect(
+ base::DictionaryValue* properties,
+ bool shared) {
NET_LOG_USER("CreateConfigurationAndConnect", "");
CallCreateConfiguration(properties, shared, true /* connect_on_configure */);
}
-void CreateConfiguration(base::DictionaryValue* properties, bool shared) {
+void NetworkConnectImpl::CreateConfiguration(base::DictionaryValue* properties,
+ bool shared) {
NET_LOG_USER("CreateConfiguration", "");
CallCreateConfiguration(properties, shared, false /* connect_on_configure */);
}
-base::string16 ErrorString(const std::string& error,
- const std::string& service_path) {
+base::string16 NetworkConnectImpl::GetErrorString(
+ const std::string& error,
+ const std::string& service_path) {
if (error.empty())
return base::string16();
if (error == shill::kErrorOutOfRange)
@@ -573,12 +610,39 @@ base::string16 ErrorString(const std::string& error,
base::UTF8ToUTF16(error));
}
-void ShowNetworkSettings(const std::string& service_path) {
- if (!ash::Shell::HasInstance())
- return;
- ash::Shell::GetInstance()->system_tray_delegate()->ShowNetworkSettings(
- service_path);
+void NetworkConnectImpl::ShowNetworkSettings(const std::string& service_path) {
+ delegate_->ShowNetworkSettings(service_path);
+}
+
+} // namespace
+
+const char NetworkConnect::kErrorActivateFailed[] = "activate-failed";
+
+static NetworkConnect* g_network_connect = NULL;
+
+// static
+void NetworkConnect::Initialize(Delegate* delegate) {
+ CHECK(g_network_connect == NULL);
+ g_network_connect = new NetworkConnectImpl(delegate);
+}
+
+// static
+void NetworkConnect::Shutdown() {
+ CHECK(g_network_connect);
+ delete g_network_connect;
+ g_network_connect = NULL;
+}
+
+// static
+NetworkConnect* NetworkConnect::Get() {
+ CHECK(g_network_connect);
+ return g_network_connect;
+}
+
+NetworkConnect::NetworkConnect() {
+}
+
+NetworkConnect::~NetworkConnect() {
}
-} // network_connect
} // ash
« no previous file with comments | « ash/system/chromeos/network/network_connect.h ('k') | ash/system/chromeos/network/network_state_list_detailed_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698