summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/cros/cros_mock.cc4
-rw-r--r--chrome/browser/chromeos/cros/network_library.h2
-rw-r--r--chrome/browser/chromeos/status/network_menu.cc19
-rw-r--r--views/controls/menu/native_menu_gtk.cc10
-rw-r--r--views/controls/menu/native_menu_gtk.h2
5 files changed, 28 insertions, 9 deletions
diff --git a/chrome/browser/chromeos/cros/cros_mock.cc b/chrome/browser/chromeos/cros/cros_mock.cc
index 51652db..5e66df0 100644
--- a/chrome/browser/chromeos/cros/cros_mock.cc
+++ b/chrome/browser/chromeos/cros/cros_mock.cc
@@ -320,6 +320,10 @@ void CrosMock::SetNetworkLibraryStatusAreaExpectations() {
.Times(1)
.WillRepeatedly((Return(false)))
.RetiresOnSaturation();
+ EXPECT_CALL(*mock_network_library_, Connected())
+ .Times(1)
+ .WillRepeatedly((Return(false)))
+ .RetiresOnSaturation();
EXPECT_CALL(*mock_network_library_, RemoveNetworkManagerObserver(_))
.Times(1)
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index 70ef38bc..80f1f94 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -462,7 +462,7 @@ class NetworkLibrary {
virtual bool Connecting() const = 0;
// Returns the current IP address if connected. If not, returns empty string.
- // virtual const std::string& IPAddress() const = 0;
+ virtual const std::string& IPAddress() const = 0;
// Returns the current list of wifi networks.
virtual const WifiNetworkVector& wifi_networks() const = 0;
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc
index 6badf44..e6aaa36 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -639,11 +639,24 @@ void NetworkMenu::InitMenuItems() {
// l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE),
// SkBitmap(), std::string(), FLAG_TOGGLE_OFFLINE));
- // Network settings.
- if (ShouldOpenButtonOptions()) {
- // Separator.
+ bool connected = cros->Connected(); // alwasy call for test expectations.
+ bool show_ip = !MenuUI::IsEnabled() && connected;
+ bool show_settings = ShouldOpenButtonOptions();
+
+ // Separator.
+ if (show_ip || show_settings) {
menu_items_.push_back(MenuItem());
+ }
+ // IP Address
+ if (show_ip) {
+ menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND,
+ ASCIIToUTF16(cros->IPAddress()), SkBitmap(),
+ std::string(), FLAG_DISABLED));
+ }
+
+ // Network settings.
+ if (show_settings) {
if (IsBrowserMode()) {
label = l10n_util::GetStringUTF16(
IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG);
diff --git a/views/controls/menu/native_menu_gtk.cc b/views/controls/menu/native_menu_gtk.cc
index 1a9c241..b648878 100644
--- a/views/controls/menu/native_menu_gtk.cc
+++ b/views/controls/menu/native_menu_gtk.cc
@@ -380,6 +380,7 @@ GtkWidget* NativeMenuGtk::AddMenuItemAt(int index,
g_object_set_data(G_OBJECT(menu_item), kPositionString,
reinterpret_cast<void*>(index));
g_signal_connect(menu_item, "activate", G_CALLBACK(CallActivate), this);
+ UpdateMenuItemState(menu_item, false);
gtk_widget_show(menu_item);
gtk_menu_append(menu_, menu_item);
@@ -398,7 +399,7 @@ void NativeMenuGtk::ResetMenu() {
}
}
-void NativeMenuGtk::UpdateMenuItemState(GtkWidget* menu_item) {
+void NativeMenuGtk::UpdateMenuItemState(GtkWidget* menu_item, bool recurse) {
int index = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu_item),
kPositionString));
@@ -409,8 +410,9 @@ void NativeMenuGtk::UpdateMenuItemState(GtkWidget* menu_item) {
model_->IsItemCheckedAt(index));
suppress_activate_signal_ = false;
}
- // Recurse into submenus, too.
- if (GTK_IS_MENU_ITEM(menu_item)) {
+
+ if (recurse && GTK_IS_MENU_ITEM(menu_item)) {
+ // Recurse into submenus.
if (gtk_menu_item_get_submenu(GTK_MENU_ITEM(menu_item))) {
Menu2* submenu =
reinterpret_cast<Menu2*>(g_object_get_data(G_OBJECT(menu_item),
@@ -424,7 +426,7 @@ void NativeMenuGtk::UpdateMenuItemState(GtkWidget* menu_item) {
// static
void NativeMenuGtk::UpdateStateCallback(GtkWidget* menu_item, gpointer data) {
NativeMenuGtk* menu = reinterpret_cast<NativeMenuGtk*>(data);
- menu->UpdateMenuItemState(menu_item);
+ menu->UpdateMenuItemState(menu_item, true);
}
// static
diff --git a/views/controls/menu/native_menu_gtk.h b/views/controls/menu/native_menu_gtk.h
index 4278d2c..99d65cc 100644
--- a/views/controls/menu/native_menu_gtk.h
+++ b/views/controls/menu/native_menu_gtk.h
@@ -67,7 +67,7 @@ class NativeMenuGtk : public MenuWrapper,
void ResetMenu();
// Updates the menu item's state.
- void UpdateMenuItemState(GtkWidget* menu_item);
+ void UpdateMenuItemState(GtkWidget* menu_item, bool recurse);
static void UpdateStateCallback(GtkWidget* menu_item, gpointer data);