| Index: chrome/browser/chromeos/options/network_connect.cc
|
| diff --git a/chrome/browser/chromeos/options/network_connect.cc b/chrome/browser/chromeos/options/network_connect.cc
|
| index 63c72068f1edf07ba017d825419d51adc8c62d30..7595faae7e63a13dffa6a13297fad366c34be42a 100644
|
| --- a/chrome/browser/chromeos/options/network_connect.cc
|
| +++ b/chrome/browser/chromeos/options/network_connect.cc
|
| @@ -15,6 +15,7 @@
|
| #include "chrome/browser/chromeos/cros/network_library.h"
|
| #include "chrome/browser/chromeos/enrollment_dialog_view.h"
|
| #include "chrome/browser/chromeos/options/network_config_view.h"
|
| +#include "chrome/browser/chromeos/system/ash_system_tray_delegate.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h"
|
| #include "chromeos/chromeos_switches.h"
|
| @@ -135,14 +136,10 @@ ConnectResult ConnectToNetwork(const std::string& service_path,
|
| if (network->type() == TYPE_ETHERNET)
|
| return CONNECT_NOT_STARTED; // Normally this shouldn't happen
|
|
|
| - if (network->type() == TYPE_WIFI) {
|
| - WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
|
| - wifi->SetEnrollmentDelegate(
|
| - chromeos::CreateEnrollmentDelegate(
|
| - parent_window,
|
| - wifi->name(),
|
| - ProfileManager::GetLastUsedProfile()));
|
| - wifi->AttemptConnection(base::Bind(&DoConnect, wifi, parent_window));
|
| + if (network->type() == TYPE_WIFI || network->type() == TYPE_VPN) {
|
| + network->SetEnrollmentDelegate(chromeos::CreateEnrollmentDelegate(
|
| + parent_window, network->name(), ProfileManager::GetLastUsedProfile()));
|
| + network->AttemptConnection(base::Bind(&DoConnect, network, parent_window));
|
| return CONNECT_STARTED;
|
| }
|
|
|
| @@ -164,20 +161,48 @@ ConnectResult ConnectToNetwork(const std::string& service_path,
|
| return CONNECT_STARTED;
|
| }
|
|
|
| - if (network->type() == TYPE_VPN) {
|
| - VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network);
|
| - vpn->SetEnrollmentDelegate(
|
| - chromeos::CreateEnrollmentDelegate(
|
| - parent_window,
|
| - vpn->name(),
|
| - ProfileManager::GetLastUsedProfile()));
|
| - vpn->AttemptConnection(base::Bind(&DoConnect, vpn, parent_window));
|
| - return CONNECT_STARTED;
|
| - }
|
| -
|
| NOTREACHED();
|
| return CONNECT_NOT_STARTED;
|
| }
|
|
|
| +void ConfigureNetwork(const std::string& service_path,
|
| + gfx::NativeWindow parent_window) {
|
| + NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
|
| + Network* network = cros->FindNetworkByPath(service_path);
|
| + if (!network)
|
| + return;
|
| +
|
| + if (network->type() == TYPE_WIFI || network->type() == TYPE_VPN) {
|
| + network->SetEnrollmentDelegate(chromeos::CreateEnrollmentDelegate(
|
| + parent_window, network->name(), ProfileManager::GetLastUsedProfile()));
|
| + // This will connect to the network only if the network just needs to have
|
| + // its certificate configured. Otherwise it will show an enrollment dialog
|
| + // if available, or call NetworkConfigView::Show().
|
| + network->AttemptConnection(
|
| + base::Bind(&NetworkConfigView::Show, network, parent_window));
|
| + return;
|
| + }
|
| +
|
| + if (network->type() == TYPE_WIMAX) {
|
| + NetworkConfigView::Show(network, parent_window);
|
| + return;
|
| + }
|
| +
|
| + if (network->type() == TYPE_CELLULAR) {
|
| + CellularNetwork* cellular = static_cast<CellularNetwork*>(network);
|
| + if (cellular->NeedsActivation()) {
|
| + ActivateCellular(service_path);
|
| + return;
|
| + } else if (cellular->out_of_credits()) {
|
| + ShowMobileSetup(service_path);
|
| + return;
|
| + }
|
| + }
|
| +
|
| + // No special configure or setup for |service_path|, show the settings UI.
|
| + ash::Shell::GetInstance()->system_tray_delegate()->ShowNetworkSettings(
|
| + service_path);
|
| +}
|
| +
|
| } // namespace network_connect
|
| } // namespace chromeos
|
|
|