summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui')
-rw-r--r--chrome/browser/ui/views/simple_message_box_views.cc4
-rw-r--r--chrome/browser/ui/views/uninstall_view.cc16
-rw-r--r--chrome/browser/ui/views/uninstall_view.h5
-rw-r--r--chrome/browser/ui/views/user_data_dir_dialog_view.cc5
4 files changed, 22 insertions, 8 deletions
diff --git a/chrome/browser/ui/views/simple_message_box_views.cc b/chrome/browser/ui/views/simple_message_box_views.cc
index 805c6b5..a399885 100644
--- a/chrome/browser/ui/views/simple_message_box_views.cc
+++ b/chrome/browser/ui/views/simple_message_box_views.cc
@@ -8,6 +8,7 @@
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
+#include "base/run_loop.h"
#include "chrome/browser/browser_process.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -179,7 +180,8 @@ MessageBoxResult ShowMessageBox(gfx::NativeWindow parent,
#else
{
MessageLoop::ScopedNestableTaskAllower allow(MessageLoopForUI::current());
- MessageLoopForUI::current()->RunWithDispatcher(dialog);
+ base::RunLoop run_loop(dialog);
+ run_loop.Run();
}
#endif
return dialog->result();
diff --git a/chrome/browser/ui/views/uninstall_view.cc b/chrome/browser/ui/views/uninstall_view.cc
index 808d245..41fee09 100644
--- a/chrome/browser/ui/views/uninstall_view.cc
+++ b/chrome/browser/ui/views/uninstall_view.cc
@@ -6,6 +6,7 @@
#include "base/message_loop.h"
#include "base/process_util.h"
+#include "base/run_loop.h"
#include "base/string16.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/shell_integration.h"
@@ -23,19 +24,21 @@
#include "ui/views/layout/layout_constants.h"
#include "ui/views/widget/widget.h"
-UninstallView::UninstallView(int* user_selection)
+UninstallView::UninstallView(int* user_selection,
+ const base::Closure& quit_closure)
: confirm_label_(NULL),
delete_profile_(NULL),
change_default_browser_(NULL),
browsers_combo_(NULL),
browsers_(NULL),
- user_selection_(*user_selection) {
+ user_selection_(*user_selection),
+ quit_closure_(quit_closure) {
SetupControls();
}
UninstallView::~UninstallView() {
// Exit the message loop we were started with so that uninstall can continue.
- MessageLoop::current()->Quit();
+ quit_closure_.Run();
}
void UninstallView::SetupControls() {
@@ -164,10 +167,13 @@ string16 UninstallView::GetItemAt(int index) {
namespace browser {
int ShowUninstallBrowserPrompt() {
+ DCHECK_EQ(MessageLoop::TYPE_UI, MessageLoop::current()->type());
int result = content::RESULT_CODE_NORMAL_EXIT;
- views::Widget::CreateWindow(new UninstallView(&result))->Show();
views::AcceleratorHandler accelerator_handler;
- MessageLoopForUI::current()->RunWithDispatcher(&accelerator_handler);
+ base::RunLoop run_loop(&accelerator_handler);
+ UninstallView* view = new UninstallView(&result, run_loop.QuitClosure());
+ views::Widget::CreateWindow(view)->Show();
+ run_loop.Run();
return result;
}
diff --git a/chrome/browser/ui/views/uninstall_view.h b/chrome/browser/ui/views/uninstall_view.h
index 181c07a..47c02f2 100644
--- a/chrome/browser/ui/views/uninstall_view.h
+++ b/chrome/browser/ui/views/uninstall_view.h
@@ -8,6 +8,7 @@
#include <map>
+#include "base/callback.h"
#include "base/string16.h"
#include "ui/base/models/combobox_model.h"
#include "ui/views/window/dialog_delegate.h"
@@ -25,7 +26,8 @@ class UninstallView : public views::ButtonListener,
public views::DialogDelegateView,
public ui::ComboboxModel {
public:
- explicit UninstallView(int* user_selection);
+ explicit UninstallView(int* user_selection,
+ const base::Closure& quit_closure);
virtual ~UninstallView();
// Overridden form views::ButtonListener.
@@ -56,6 +58,7 @@ class UninstallView : public views::ButtonListener,
typedef std::map<std::wstring, std::wstring> BrowsersMap;
scoped_ptr<BrowsersMap> browsers_;
int& user_selection_;
+ base::Closure quit_closure_;
DISALLOW_COPY_AND_ASSIGN(UninstallView);
};
diff --git a/chrome/browser/ui/views/user_data_dir_dialog_view.cc b/chrome/browser/ui/views/user_data_dir_dialog_view.cc
index a0e7128..2a1f29c 100644
--- a/chrome/browser/ui/views/user_data_dir_dialog_view.cc
+++ b/chrome/browser/ui/views/user_data_dir_dialog_view.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/views/user_data_dir_dialog_view.h"
#include "base/logging.h"
+#include "base/run_loop.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/ui/user_data_dir_dialog.h"
#include "grit/chromium_strings.h"
@@ -100,10 +101,12 @@ void UserDataDirDialogView::FileSelectionCanceled(void* params) {
namespace browser {
FilePath ShowUserDataDirDialog(const FilePath& user_data_dir) {
+ DCHECK_EQ(MessageLoop::TYPE_UI, MessageLoop::current()->type());
// When the window closes, it will delete itself.
UserDataDirDialogView* dialog = new UserDataDirDialogView(user_data_dir);
views::Widget::CreateWindow(dialog)->Show();
- MessageLoopForUI::current()->RunWithDispatcher(dialog);
+ base::RunLoop run_loop(dialog);
+ run_loop.Run();
return dialog->user_data_dir();
}