Index: chrome/browser/chromeos/dom_ui/internet_options_handler.cc |
=================================================================== |
--- chrome/browser/chromeos/dom_ui/internet_options_handler.cc (revision 64886) |
+++ chrome/browser/chromeos/dom_ui/internet_options_handler.cc (working copy) |
@@ -56,11 +56,19 @@ |
} // namespace |
InternetOptionsHandler::InternetOptionsHandler() { |
- chromeos::CrosLibrary::Get()->GetNetworkLibrary()->AddObserver(this); |
+ chromeos::NetworkLibrary* netlib = |
+ chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
+ netlib->AddNetworkManagerObserver(this); |
+ netlib->AddCellularDataPlanObserver(this); |
+ MonitorActiveNetwork(netlib); |
} |
InternetOptionsHandler::~InternetOptionsHandler() { |
- chromeos::CrosLibrary::Get()->GetNetworkLibrary()->RemoveObserver(this); |
+ chromeos::NetworkLibrary *netlib = |
+ chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
+ netlib->RemoveNetworkManagerObserver(this); |
+ netlib->RemoveCellularDataPlanObserver(this); |
+ netlib->RemoveObserverForAllNetworks(this); |
} |
void InternetOptionsHandler::GetLocalizedValues( |
@@ -357,10 +365,8 @@ |
browser->OpenMobilePlanTabAndActivate(); |
} |
-void InternetOptionsHandler::NetworkChanged(chromeos::NetworkLibrary* cros) { |
- if (!dom_ui_) |
- return; |
- |
+void InternetOptionsHandler::RefreshNetworkData( |
+ chromeos::NetworkLibrary* cros) { |
DictionaryValue dictionary; |
dictionary.Set("wiredList", GetWiredList()); |
dictionary.Set("wirelessList", GetWirelessList()); |
@@ -373,7 +379,45 @@ |
L"options.InternetOptions.refreshNetworkData", dictionary); |
} |
-void InternetOptionsHandler::CellularDataPlanChanged( |
+void InternetOptionsHandler::OnNetworkManagerChanged( |
+ chromeos::NetworkLibrary* cros) { |
+ if (!dom_ui_) |
+ return; |
+ MonitorActiveNetwork(cros); |
+ RefreshNetworkData(cros); |
+} |
+ |
+void InternetOptionsHandler::OnNetworkChanged( |
+ chromeos::NetworkLibrary* cros, |
+ const chromeos::Network* network) { |
+ if (dom_ui_) |
+ RefreshNetworkData(cros); |
+} |
+ |
+// Add an observer for the active network, if any, so |
+// that we can dynamically display the correct icon for |
+// that network's signal strength. |
+// TODO(ers) Ideally, on this page we'd monitor all networks for |
+// signal strength changes, not just the active network. |
+void InternetOptionsHandler::MonitorActiveNetwork( |
+ chromeos::NetworkLibrary* cros) { |
+ const chromeos::Network* network = cros->active_network(); |
+ if (active_network_.empty() || network == NULL || |
+ active_network_ != network->service_path()) { |
+ if (!active_network_.empty()) { |
+ cros->RemoveNetworkObserver(active_network_, this); |
+ } |
+ if (network != NULL) { |
+ cros->AddNetworkObserver(network->service_path(), this); |
+ } |
+ } |
+ if (network != NULL) |
+ active_network_ = network->service_path(); |
+ else |
+ active_network_ = ""; |
+} |
+ |
+void InternetOptionsHandler::OnCellularDataPlanChanged( |
chromeos::NetworkLibrary* obj) { |
if (!dom_ui_) |
return; |
@@ -950,7 +994,7 @@ |
cellular_networks.begin(); it != cellular_networks.end(); ++it) { |
SkBitmap icon = chromeos::NetworkMenu::IconForNetworkStrength( |
(*it)->strength(), true); |
- SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); |
+ SkBitmap badge = chromeos::NetworkMenu::BadgeForNetworkTechnology(*it); |
icon = chromeos::NetworkMenu::IconForDisplay(icon, badge); |
list->Append(GetNetwork( |
(*it)->service_path(), |