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

Unified Diff: chrome/browser/chromeos/status/network_menu.cc

Issue 9690021: chromeos: Refactor some network related code in preparation for the uber tray. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 9 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
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/status/network_menu.cc
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc
index 98de1d21373a1c676d591c48d25579ed1799125f..6e8672fa8ab9340edde2d5c5437a9a36dd8d1f2b 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -87,6 +87,15 @@ void SetMenuMargins(views::MenuItemView* menu_item_view, int top, int bottom) {
}
}
+// Activate a cellular network.
+void ActivateCellular(const chromeos::CellularNetwork* cellular) {
+ DCHECK(cellular);
+ Browser* browser = BrowserList::GetLastActive();
+ if (!browser)
+ return;
+ browser->OpenMobilePlanTabAndActivate();
+}
+
} // namespace
namespace chromeos {
@@ -202,15 +211,12 @@ class NetworkMenuModel : public ui::MenuModel {
private:
// Show a NetworkConfigView modal dialog instance.
void ShowNetworkConfigView(NetworkConfigView* view) const;
- // Activate a cellular network.
- void ActivateCellular(const CellularNetwork* cellular) const;
// Open a dialog to set up and connect to a network.
void ShowOther(ConnectionType type) const;
DISALLOW_COPY_AND_ASSIGN(NetworkMenuModel);
};
-
class MoreMenuModel : public NetworkMenuModel {
public:
explicit MoreMenuModel(const base::WeakPtr<NetworkMenu> owner)
@@ -281,14 +287,7 @@ void NetworkMenuModel::ConnectToNetworkAt(int index,
// Connect or reconnect.
if (auto_connect >= 0)
wifi->SetAutoConnect(auto_connect ? true : false);
- if (wifi->connecting_or_connected()) {
- // Show the config settings for the active network.
- owner_->ShowTabbedNetworkSettings(wifi);
- } else {
- wifi->AttemptConnection(base::Bind(&NetworkMenu::DoConnect,
- owner_,
- wifi));
- }
+ owner_->ConnectToNetwork(wifi);
} else {
// If we are attempting to connect to a network that no longer exists,
// display a notification.
@@ -300,18 +299,7 @@ void NetworkMenuModel::ConnectToNetworkAt(int index,
CellularNetwork* cellular = cros->FindCellularNetworkByPath(
service_path);
if (cellular) {
- if ((cellular->activation_state() != ACTIVATION_STATE_ACTIVATED &&
- cellular->activation_state() != ACTIVATION_STATE_UNKNOWN) ||
- cellular->needs_new_plan()) {
- ActivateCellular(cellular);
- } else if (cellular->connecting_or_connected()) {
- // Cellular network is connecting or connected,
- // so we show the config settings for the cellular network.
- owner_->ShowTabbedNetworkSettings(cellular);
- } else {
- // Clicked on a disconnected cellular network, so connect to it.
- cros->ConnectToCellularNetwork(cellular);
- }
+ owner_->ConnectToNetwork(cellular);
} else {
// If we are attempting to connect to a network that no longer exists,
// display a notification.
@@ -328,22 +316,65 @@ void NetworkMenuModel::ConnectToNetworkAt(int index,
} else if (flags & FLAG_VPN) {
VirtualNetwork* vpn = cros->FindVirtualNetworkByPath(service_path);
if (vpn) {
+ owner_->ConnectToNetwork(vpn);
+ } else {
+ // If we are attempting to connect to a network that no longer exists,
+ // display a notification.
+ LOG(WARNING) << "VPN does not exist to connect to: " << service_path;
+ // TODO(stevenjb): Show notification.
+ }
+ }
+}
+
+void NetworkMenu::ConnectToNetwork(Network* network) {
+ NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
+ switch (network->type()) {
+ case TYPE_ETHERNET: {
+ ShowTabbedNetworkSettings(network);
+ break;
+ }
+ case TYPE_WIFI: {
+ WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
+ if (wifi->connecting_or_connected()) {
+ ShowTabbedNetworkSettings(wifi);
+ } else {
+ wifi->AttemptConnection(base::Bind(&NetworkMenu::DoConnect,
+ weak_pointer_factory_.GetWeakPtr(),
+ wifi));
+ }
+ break;
+ }
+
+ case TYPE_CELLULAR: {
+ CellularNetwork* cell = static_cast<CellularNetwork*>(network);
+ if (cell->NeedsActivation()) {
+ ActivateCellular(cell);
+ } else if (cell->connecting_or_connected()) {
+ // Cellular network is connecting or connected,
+ // so we show the config settings for the cellular network.
+ ShowTabbedNetworkSettings(cell);
+ } else {
+ // Clicked on a disconnected cellular network, so connect to it.
+ cros->ConnectToCellularNetwork(cell);
+ }
+ break;
+ }
+
+ case TYPE_VPN: {
+ VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network);
// Connect or reconnect.
if (vpn->connecting_or_connected()) {
- // Show the config settings for the connected network.
- if (cros->connected_network())
- owner_->ShowTabbedNetworkSettings(cros->connected_network());
+ ShowTabbedNetworkSettings(vpn);
} else {
vpn->AttemptConnection(base::Bind(&NetworkMenu::DoConnect,
- owner_,
+ weak_pointer_factory_.GetWeakPtr(),
vpn));
}
- } else {
- // If we are attempting to connect to a network that no longer exists,
- // display a notification.
- LOG(WARNING) << "VPN does not exist to connect to: " << service_path;
- // TODO(stevenjb): Show notification.
+ break;
}
+
+ default:
+ break;
}
}
@@ -451,9 +482,8 @@ void NetworkMenuModel::ActivatedAt(int index) {
} else if (flags & FLAG_TOGGLE_OFFLINE) {
cros->EnableOfflineMode(!cros->offline_mode());
} else if (flags & FLAG_ETHERNET) {
- if (cros->ethernet_connected()) {
+ if (cros->ethernet_connected())
owner_->ShowTabbedNetworkSettings(cros->ethernet_network());
- }
} else if (flags & (FLAG_WIFI | FLAG_ADD_WIFI |
FLAG_CELLULAR | FLAG_ADD_CELLULAR |
FLAG_VPN | FLAG_ADD_VPN)) {
@@ -482,14 +512,6 @@ void NetworkMenuModel::ShowNetworkConfigView(NetworkConfigView* view) const {
window->Show();
}
-void NetworkMenuModel::ActivateCellular(const CellularNetwork* cellular) const {
- DCHECK(cellular);
- Browser* browser = BrowserList::GetLastActive();
- if (!browser)
- return;
- browser->OpenMobilePlanTabAndActivate();
-}
-
void NetworkMenuModel::ShowOther(ConnectionType type) const {
if (type == TYPE_CELLULAR) {
ChooseMobileNetworkDialog::ShowDialog(
@@ -1040,6 +1062,14 @@ void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const {
Browser* browser = BrowserList::GetLastActive();
if (!browser)
return;
+
+ // In case of a VPN, show the config settings for the connected network.
+ if (network->type() == chromeos::TYPE_VPN) {
+ network = CrosLibrary::Get()->GetNetworkLibrary()->connected_network();
+ if (!network)
+ return;
+ }
+
std::string network_name(network->name());
if (network_name.empty() && network->type() == chromeos::TYPE_ETHERNET) {
network_name = l10n_util::GetStringUTF8(
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698