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 ab0e818e8eb1722fa13cf2716319ea2766a72180..4293c8134002abcfb779bcd614939681a9139a34 100644 |
--- a/chrome/browser/chromeos/status/network_menu.cc |
+++ b/chrome/browser/chromeos/status/network_menu.cc |
@@ -1064,9 +1064,24 @@ void NetworkMenu::ToggleCellular() { |
if (!cellular) { |
LOG(ERROR) << "No cellular device found, it should be available."; |
cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); |
- } else if (cellular->sim_lock_state() == SIM_UNLOCKED || |
- cellular->sim_lock_state() == SIM_UNKNOWN) { |
- cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); |
+ } else if (!cellular->is_sim_locked()) { |
+ if (cellular->is_sim_absent()) { |
+ std::string setup_url; |
+ MobileConfig* config = MobileConfig::GetInstance(); |
+ if (config->IsReady()) { |
+ const MobileConfig::LocaleConfig* locale_config = |
+ config->GetLocaleConfig(); |
+ if (locale_config) |
+ setup_url = locale_config->setup_url(); |
+ } |
+ if (!setup_url.empty()) { |
+ GetAppropriateBrowser()->ShowSingletonTab(GURL(setup_url)); |
+ } else { |
+ // TODO(nkostylev): Show generic error message. http://crosbug.com/15444 |
+ } |
+ } else { |
+ cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); |
+ } |
} else { |
SimDialogDelegate::ShowDialog(delegate()->GetNativeWindow(), |
SimDialogDelegate::SIM_DIALOG_UNLOCK); |
@@ -1089,4 +1104,9 @@ bool NetworkMenu::ShouldHighlightNetwork(const Network* network) { |
return ::ShouldHighlightNetwork(network); |
} |
+Browser* NetworkMenu::GetAppropriateBrowser() { |
+ return Browser::GetOrCreateTabbedBrowser( |
+ ProfileManager::GetDefaultProfileOrOffTheRecord()); |
+} |
+ |
} // namespace chromeos |