Index: chrome/browser/chromeos/status/network_menu_icon.cc |
diff --git a/chrome/browser/chromeos/status/network_menu_icon.cc b/chrome/browser/chromeos/status/network_menu_icon.cc |
index d6f1da001103db0143e06b091a0023097ae7981f..ebeca959412e58bdf5c234a0721c11ae99a915c0 100644 |
--- a/chrome/browser/chromeos/status/network_menu_icon.cc |
+++ b/chrome/browser/chromeos/status/network_menu_icon.cc |
@@ -8,6 +8,7 @@ |
#include <cmath> |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/chromeos/accessibility_util.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
#include "grit/generated_resources.h" |
#include "grit/theme_resources.h" |
@@ -207,6 +208,12 @@ class NetworkIcon { |
} |
} |
bool dirty = bitmap_.empty(); |
+ bool speak = false; |
+ if ((Network::IsConnectedState(state_) && !network->connected()) || |
+ (Network::IsConnectingState(state_) && !network->connecting()) || |
+ (Network::IsDisconnectedState(state_) && !network->disconnected())) { |
+ speak = true; |
+ } |
if (state_ != network->state()) { |
state_ = network->state(); |
dirty = true; |
@@ -247,6 +254,37 @@ class NetworkIcon { |
UpdateIcon(network); |
GenerateBitmap(); |
} |
+ if (speak) { |
+ std::string connection_string; |
+ if (Network::IsConnectedState(state_)) { |
+ switch (network->type()) { |
+ case TYPE_ETHERNET: |
+ connection_string = l10n_util::GetStringFUTF8( |
+ IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, |
+ l10n_util::GetStringUTF16( |
+ IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET)); |
+ break; |
+ default: |
+ connection_string = l10n_util::GetStringFUTF8( |
+ IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, |
+ UTF8ToUTF16(network->name())); |
+ break; |
+ } |
+ } else if (Network::IsConnectingState(state_)) { |
+ const Network* connecting_network = cros->connecting_network(); |
+ if (connecting_network && connecting_network->type() != TYPE_ETHERNET) { |
+ connection_string = l10n_util::GetStringFUTF8( |
+ IDS_STATUSBAR_NETWORK_CONNECTING_TOOLTIP, |
+ UTF8ToUTF16(connecting_network->name())); |
+ } |
+ } else if (Network::IsDisconnectedState(state_)) { |
+ connection_string = l10n_util::GetStringUTF8( |
+ IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP); |
+ } |
+ if (!connection_string.empty()) { |
+ accessibility::MaybeSpeak(connection_string.c_str(), true, false); |
+ } |
+ } |
} |
// Sets up the base icon image. |