diff options
Diffstat (limited to 'chrome/browser/ui')
-rw-r--r-- | chrome/browser/ui/views/simple_message_box_views.cc | 4 | ||||
-rw-r--r-- | chrome/browser/ui/views/uninstall_view.cc | 16 | ||||
-rw-r--r-- | chrome/browser/ui/views/uninstall_view.h | 5 | ||||
-rw-r--r-- | chrome/browser/ui/views/user_data_dir_dialog_view.cc | 5 |
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(); } |