| Index: ui/views/widget/desktop_aura/desktop_dispatcher_client.cc
|
| diff --git a/ui/views/widget/desktop_aura/desktop_dispatcher_client.cc b/ui/views/widget/desktop_aura/desktop_dispatcher_client.cc
|
| index 9962eaa0ec15bb7f00587a7db152710f16f6cc83..4b8ca2db08d6e01b821f7999a723fc6f7b591f08 100644
|
| --- a/ui/views/widget/desktop_aura/desktop_dispatcher_client.cc
|
| +++ b/ui/views/widget/desktop_aura/desktop_dispatcher_client.cc
|
| @@ -5,44 +5,29 @@
|
| #include "ui/views/widget/desktop_aura/desktop_dispatcher_client.h"
|
|
|
| #include "base/auto_reset.h"
|
| +#include "base/bind.h"
|
| #include "base/run_loop.h"
|
|
|
| namespace views {
|
|
|
| -DesktopDispatcherClient::DesktopDispatcherClient()
|
| - : weak_ptr_factory_(this) {}
|
| +DesktopDispatcherClient::DesktopDispatcherClient() {
|
| +}
|
|
|
| DesktopDispatcherClient::~DesktopDispatcherClient() {
|
| }
|
|
|
| -void DesktopDispatcherClient::RunWithDispatcher(
|
| - base::MessagePumpDispatcher* nested_dispatcher) {
|
| - // TODO(erg): This class has been copypastad from
|
| - // ash/accelerators/nested_dispatcher_controller.cc. I have left my changes
|
| - // commented out because I don't entirely understand the implications of the
|
| - // change.
|
| - base::MessageLoopForUI* loop = base::MessageLoopForUI::current();
|
| - base::MessageLoopForUI::ScopedNestableTaskAllower allow_nested(loop);
|
| -
|
| - base::Closure old_quit_closure = quit_closure_;
|
| +void DesktopDispatcherClient::PrepareNestedLoopClosures(
|
| + base::MessagePumpDispatcher* dispatcher,
|
| + base::Closure* run_closure,
|
| + base::Closure* quit_closure) {
|
| #if defined(OS_WIN)
|
| - base::RunLoop run_loop(nested_dispatcher);
|
| + scoped_ptr<base::RunLoop> run_loop(new base::RunLoop(dispatcher));
|
| #else
|
| - base::RunLoop run_loop;
|
| + scoped_ptr<base::RunLoop> run_loop(new base::RunLoop());
|
| #endif
|
| -
|
| - quit_closure_ = run_loop.QuitClosure();
|
| - base::WeakPtr<DesktopDispatcherClient> alive(weak_ptr_factory_.GetWeakPtr());
|
| - run_loop.Run();
|
| - if (alive) {
|
| - weak_ptr_factory_.InvalidateWeakPtrs();
|
| - quit_closure_ = old_quit_closure;
|
| - }
|
| -}
|
| -
|
| -void DesktopDispatcherClient::QuitNestedMessageLoop() {
|
| - CHECK(!quit_closure_.is_null());
|
| - quit_closure_.Run();
|
| + *quit_closure = run_loop->QuitClosure();
|
| + *run_closure =
|
| + base::Bind(&base::RunLoop::Run, base::Owned(run_loop.release()));
|
| }
|
|
|
| } // namespace views
|
|
|