1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ui/views/widget/desktop_aura/desktop_dispatcher_client.h"
6
7#include "base/run_loop.h"
8
9namespace views {
10
11DesktopDispatcherClient::DesktopDispatcherClient() {}
12
13DesktopDispatcherClient::~DesktopDispatcherClient() {}
14
15void DesktopDispatcherClient::RunWithDispatcher(
16    base::MessageLoop::Dispatcher* nested_dispatcher,
17    aura::Window* associated_window,
18    bool nestable_tasks_allowed) {
19  // TODO(erg): This class has been copypastad from
20  // ash/accelerators/nested_dispatcher_controller.cc. I have left my changes
21  // commented out because I don't entirely understand the implications of the
22  // change.
23  base::MessageLoopForUI* loop = base::MessageLoopForUI::current();
24  bool did_allow_task_nesting = loop->NestableTasksAllowed();
25  loop->SetNestableTasksAllowed(nestable_tasks_allowed);
26
27  // DefaultAcceleratorDispatcher dispatcher(nested_dispatcher,
28  //                                         associated_window);
29  base::RunLoop run_loop(nested_dispatcher);
30  run_loop.Run();
31  loop->SetNestableTasksAllowed(did_allow_task_nesting);
32}
33
34}  // namespace views
35