summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/views/uninstall_view.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/views/uninstall_view.cc')
-rw-r--r--chrome/browser/ui/views/uninstall_view.cc16
1 files changed, 11 insertions, 5 deletions
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;
}