diff options
Diffstat (limited to 'chrome/browser/ui')
3 files changed, 92 insertions, 22 deletions
diff --git a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc index 81c8ee5..16da1e5 100644 --- a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc +++ b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc @@ -598,7 +598,7 @@ void MobileSetupHandler::StartOTASP() { network->connected() && network->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATED) { chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> - DisconnectFromWirelessNetwork(network); + DisconnectFromNetwork(network); } else { EvaluateCellularNetwork(network); } @@ -624,7 +624,7 @@ void MobileSetupHandler::DisconnectFromNetwork( DCHECK(network); LOG(INFO) << "Disconnecting from: " << network->service_path(); chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> - DisconnectFromWirelessNetwork(network); + DisconnectFromNetwork(network); // Disconnect will force networks to be reevaluated, so // we don't want to continue processing on this path anymore. evaluating_ = false; @@ -696,7 +696,7 @@ void MobileSetupHandler::ForceReconnect( // First, disconnect... LOG(INFO) << "Disconnecting from " << network->service_path(); chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> - DisconnectFromWirelessNetwork(network); + DisconnectFromNetwork(network); // Check the network state 3s after we disconnect to make sure. scoped_refptr<TaskProxy> task = new TaskProxy(AsWeakPtr(), delay); @@ -760,8 +760,7 @@ void MobileSetupHandler::EvaluateCellularNetwork( } default: { if (network->failed_or_disconnected() || - network->connection_state() == - chromeos::STATE_ACTIVATION_FAILURE) { + network->state() == chromeos::STATE_ACTIVATION_FAILURE) { new_state = (network->activation_state() == chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED) ? PLAN_ACTIVATION_TRYING_OTASP : @@ -942,7 +941,7 @@ void MobileSetupHandler::EvaluateCellularNetwork( network->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATING) && (network->error() == chromeos::ERROR_UNKNOWN || network->error() == chromeos::ERROR_OTASP_FAILED) && - network->connection_state() == chromeos::STATE_ACTIVATION_FAILURE) { + network->state() == chromeos::STATE_ACTIVATION_FAILURE) { LOG(WARNING) << "Activation failure detected " << network->service_path().c_str(); switch (state_) { @@ -1224,7 +1223,7 @@ bool MobileSetupHandler::GotActivationError( const char* error_code = kErrorDefault; // This is the magic for detection of errors in during activation process. - if (network->connection_state() == chromeos::STATE_FAILURE && + if (network->state() == chromeos::STATE_FAILURE && network->error() == chromeos::ERROR_AAA_FAILED) { if (network->activation_state() == chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED) { @@ -1238,8 +1237,7 @@ bool MobileSetupHandler::GotActivationError( } } got_error = true; - } else if (network->connection_state() == - chromeos::STATE_ACTIVATION_FAILURE) { + } else if (network->state() == chromeos::STATE_ACTIVATION_FAILURE) { if (network->error() == chromeos::ERROR_NEED_EVDO) { if (network->activation_state() == chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED) diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc index 3be430c..3f8ad78 100644 --- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc +++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc @@ -648,6 +648,14 @@ void InternetOptionsHandler::PopulateDictionaryDetails( } else { PopulateCellularDetails(cros, cellular, &dictionary); } + } else if (type == chromeos::TYPE_VPN) { + const chromeos::VirtualNetwork* vpn = + cros->FindVirtualNetworkByPath(net->service_path()); + if (!vpn) { + LOG(WARNING) << "Cannot find network " << net->service_path(); + } else { + PopulateVPNDetails(vpn, &dictionary); + } } web_ui_->CallJavascriptFunction( @@ -724,6 +732,12 @@ void InternetOptionsHandler::PopulateCellularDetails( SetActivationButtonVisibility(cellular, dictionary); } +void InternetOptionsHandler::PopulateVPNDetails( + const chromeos::VirtualNetwork* vpn, + DictionaryValue* dictionary) { + // TODO(altimofeev): implement this. +} + void InternetOptionsHandler::SetActivationButtonVisibility( const chromeos::CellularNetwork* cellular, DictionaryValue* dictionary) { @@ -801,8 +815,7 @@ void InternetOptionsHandler::LoginToOtherCallback(const ListValue* args) { chromeos::NetworkLibrary* cros = chromeos::CrosLibrary::Get()->GetNetworkLibrary(); - cros->ConnectToWifiNetwork(sec, ssid, password, std::string(), std::string(), - true); + cros->ConnectToWifiNetwork(sec, ssid, password, std::string(), std::string()); } void InternetOptionsHandler::CreateModalPopup(views::WindowDelegate* view) { @@ -843,6 +856,8 @@ void InternetOptionsHandler::ButtonClickCallback(const ListValue* args) { HandleWifiButtonClick(service_path, command); } else if (type == chromeos::TYPE_CELLULAR) { HandleCellularButtonClick(service_path, command); + } else if (type == chromeos::TYPE_VPN) { + HandleVPNButtonClick(service_path, command); } else { NOTREACHED(); } @@ -862,7 +877,7 @@ void InternetOptionsHandler::HandleWifiButtonClick( cros->ForgetWifiNetwork(service_path); } else if (!use_settings_ui_ && service_path == kOtherNetworksFakePath) { // Other wifi networks. - CreateModalPopup(new chromeos::NetworkConfigView()); + CreateModalPopup(new chromeos::NetworkConfigView(chromeos::TYPE_WIFI)); } else if ((wifi = cros->FindWifiNetworkByPath(service_path))) { if (command == "connect") { // Connect to wifi here. Open password page if appropriate. @@ -883,7 +898,7 @@ void InternetOptionsHandler::HandleWifiButtonClick( cros->ConnectToWifiNetwork(wifi); } } else if (command == "disconnect") { - cros->DisconnectFromWirelessNetwork(wifi); + cros->DisconnectFromNetwork(wifi); } else if (command == "options") { PopulateDictionaryDetails(wifi, cros); } @@ -901,7 +916,7 @@ void InternetOptionsHandler::HandleCellularButtonClick( if (command == "connect") { cros->ConnectToCellularNetwork(cellular); } else if (command == "disconnect") { - cros->DisconnectFromWirelessNetwork(cellular); + cros->DisconnectFromNetwork(cellular); } else if (command == "activate") { Browser* browser = BrowserList::GetLastActive(); if (browser) @@ -912,6 +927,35 @@ void InternetOptionsHandler::HandleCellularButtonClick( } } +void InternetOptionsHandler::HandleVPNButtonClick( + const std::string& service_path, + const std::string& command) { + chromeos::NetworkLibrary* cros = + chromeos::CrosLibrary::Get()->GetNetworkLibrary(); + chromeos::VirtualNetwork* network = NULL; + // TODO(altimofeev): verify if service_path in condition is correct. + if (!use_settings_ui_ && service_path == kOtherNetworksFakePath) { + // Other VPN networks. + CreateModalPopup(new chromeos::NetworkConfigView(chromeos::TYPE_VPN)); + } else if ((network = cros->FindVirtualNetworkByPath(service_path))) { + if (command == "connect") { + // Connect to VPN here. Open password page if appropriate. + if (network->NeedMoreInfoToConnect()) { + if (use_settings_ui_) { + // TODO(altimofeev): implement this. + } else { + CreateModalPopup(new chromeos::NetworkConfigView(network)); + } + } else { + cros->ConnectToVirtualNetwork(network); + } + } else if (command == "disconnect") { + cros->DisconnectFromNetwork(network); + } else if (command == "options") { + PopulateDictionaryDetails(network, cros); + } + } +} void InternetOptionsHandler::RefreshCellularPlanCallback( const ListValue* args) { std::string service_path; @@ -1000,13 +1044,16 @@ ListValue* InternetOptionsHandler::GetWiredList() { const chromeos::EthernetNetwork* ethernet_network = cros->ethernet_network(); const SkBitmap* icon = rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); - const SkBitmap* badge = !ethernet_network || + const SkBitmap* bottom_right_badge = !ethernet_network || (!ethernet_network->connecting() && !ethernet_network->connected()) ? rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED) : NULL; + const SkBitmap* bottom_left_badge = + chromeos::NetworkMenu::BadgeForPrivateNetworkStatus(ethernet_network); if (ethernet_network) { list->Append(GetNetwork( ethernet_network->service_path(), - chromeos::NetworkMenu::IconForDisplay(icon, badge), + chromeos::NetworkMenu::IconForDisplay(icon, bottom_right_badge, NULL, + bottom_left_badge), l10n_util::GetStringUTF8(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), ethernet_network->connecting(), ethernet_network->connected(), @@ -1026,16 +1073,24 @@ ListValue* InternetOptionsHandler::GetWirelessList() { ResourceBundle& rb = ResourceBundle::GetSharedInstance(); ListValue* list = new ListValue(); + const chromeos::Network* active_network = cros->active_network(); + bool has_vpn = active_network && cros->virtual_network(); + bool vpn_on_wireless = has_vpn && + active_network->type() == chromeos::TYPE_WIFI; const chromeos::WifiNetworkVector& wifi_networks = cros->wifi_networks(); for (chromeos::WifiNetworkVector::const_iterator it = wifi_networks.begin(); it != wifi_networks.end(); ++it) { const SkBitmap* icon = chromeos::NetworkMenu::IconForNetworkStrength(*it, true); - const SkBitmap* badge = (*it)->encrypted() ? + const SkBitmap* bottom_right_badge = (*it)->encrypted() ? rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : NULL; + const SkBitmap* bottom_left_badge = + vpn_on_wireless && active_network == (*it) ? + chromeos::NetworkMenu::BadgeForPrivateNetworkStatus(NULL) : NULL; list->Append(GetNetwork( (*it)->service_path(), - chromeos::NetworkMenu::IconForDisplay(icon, badge), + chromeos::NetworkMenu::IconForDisplay(icon, bottom_right_badge, NULL, + bottom_left_badge), (*it)->name(), (*it)->connecting(), (*it)->connected(), @@ -1061,19 +1116,25 @@ ListValue* InternetOptionsHandler::GetWirelessList() { false)); } + bool vpn_on_cellular = has_vpn && + active_network->type() == chromeos::TYPE_CELLULAR; const chromeos::CellularNetworkVector cellular_networks = cros->cellular_networks(); for (chromeos::CellularNetworkVector::const_iterator it = cellular_networks.begin(); it != cellular_networks.end(); ++it) { const SkBitmap* icon = chromeos::NetworkMenu::IconForNetworkStrength(*it, true); - const SkBitmap* badge = + const SkBitmap* bottom_right_badge = chromeos::NetworkMenu::BadgeForNetworkTechnology(*it); const SkBitmap* roaming_badge = chromeos::NetworkMenu::BadgeForRoamingStatus(*it); + const SkBitmap* bottom_left_badge = + vpn_on_cellular && active_network == (*it) ? + chromeos::NetworkMenu::BadgeForPrivateNetworkStatus(NULL) : NULL; list->Append(GetNetwork( (*it)->service_path(), - chromeos::NetworkMenu::IconForDisplay(icon, badge, roaming_badge), + chromeos::NetworkMenu::IconForDisplay(icon, bottom_right_badge, + roaming_badge, bottom_left_badge), (*it)->name(), (*it)->connecting(), (*it)->connected(), @@ -1101,6 +1162,9 @@ ListValue* InternetOptionsHandler::GetRememberedList() { cros->remembered_wifi_networks(); const chromeos::WifiNetworkVector& wifi_networks = cros->wifi_networks(); + const chromeos::Network* active_network = cros->active_network(); + bool vpn_on_wireless = active_network && cros->virtual_network() && + active_network->type() == chromeos::TYPE_WIFI; // The remembered networks from libcros/flimflam don't include the signal // strength, so fall back to the detected networks for this data. We @@ -1130,11 +1194,15 @@ ListValue* InternetOptionsHandler::GetRememberedList() { // Place the secure badge on the icon if the remembered network is // encrypted (the matching detected network, if any, will have the same // encrypted property by definition). - const SkBitmap* badge = wifi->encrypted() ? + const SkBitmap* bottom_right_badge = wifi->encrypted() ? rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : NULL; + const SkBitmap* bottom_left_badge = + vpn_on_wireless && active_network == wifi ? + chromeos::NetworkMenu::BadgeForPrivateNetworkStatus(NULL) : NULL; list->Append(GetNetwork( wifi->service_path(), - chromeos::NetworkMenu::IconForDisplay(icon, badge), + chromeos::NetworkMenu::IconForDisplay(icon, bottom_right_badge, NULL, + bottom_left_badge), wifi->name(), wifi->connecting(), wifi->connected(), diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h index dcaf218..a4bdb56 100644 --- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h +++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h @@ -63,6 +63,8 @@ class InternetOptionsHandler const std::string& command); void HandleCellularButtonClick(const std::string& service_path, const std::string& command); + void HandleVPNButtonClick(const std::string& service_path, + const std::string& command); // Initiates cellular plan data refresh. The results from libcros will be // passed through CellularDataPlanChanged() callback method. @@ -94,6 +96,8 @@ class InternetOptionsHandler void PopulateCellularDetails(chromeos::NetworkLibrary* cros, const chromeos::CellularNetwork* cellular, DictionaryValue* dictionary); + void PopulateVPNDetails(const chromeos::VirtualNetwork* vpn, + DictionaryValue* dictionary); // Converts CellularDataPlan structure into dictionary for JS. Formats plan // settings into human readable texts. |