Index: views/controls/menu/menu_controller.cc |
diff --git a/views/controls/menu/menu_controller.cc b/views/controls/menu/menu_controller.cc |
index 2533cef20872a784db372cc6817af07bee8ec426..4fa5beeb69eea457e5e5a61db6304be7138f45fa 100644 |
--- a/views/controls/menu/menu_controller.cc |
+++ b/views/controls/menu/menu_controller.cc |
@@ -303,9 +303,14 @@ MenuItemView* MenuController::Run(gfx::NativeWindow parent, |
menu_button_ = button; |
} |
- // Make sure Chrome doesn't attempt to shut down while the menu is showing. |
+ // Make sure Chrome doesn't attempt to shut down while the menu is |
+ // showing. We don't ref and unref the ViewsDelegate for ChromeOS |
+ // because this will exit the message loop if no browsers exist, |
+ // (e.g. on the login screen). |
+#if !defined(OS_CHROMEOS) |
if (ViewsDelegate::views_delegate) |
- ViewsDelegate::views_delegate->AddRef(); |
+ ViewsDelegate::views_delegate->AddRef(); |
+#endif |
// We need to turn on nestable tasks as in some situations (pressing alt-f for |
// one) the menus are run from a task. If we don't do this and are invoked |
@@ -317,8 +322,10 @@ MenuItemView* MenuController::Run(gfx::NativeWindow parent, |
loop->Run(this); |
loop->SetNestableTasksAllowed(did_allow_task_nesting); |
+#if !defined(OS_CHROMEOS) |
if (ViewsDelegate::views_delegate) |
ViewsDelegate::views_delegate->ReleaseRef(); |
+#endif |
// Close any open menus. |
SetSelection(NULL, SELECTION_UPDATE_IMMEDIATELY | SELECTION_EXIT); |