1
2// Copyright 2014 The Chromium Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5
6#include "mojo/services/window_manager/window_manager_service_impl.h"
7
8#include "mojo/services/window_manager/window_manager_app.h"
9
10namespace mojo {
11
12////////////////////////////////////////////////////////////////////////////////
13// WindowManagerServiceImpl, public:
14
15WindowManagerServiceImpl::WindowManagerServiceImpl(
16    WindowManagerApp* window_manager)
17    : window_manager_(window_manager) {
18  window_manager_->AddConnection(this);
19}
20
21WindowManagerServiceImpl::~WindowManagerServiceImpl() {
22  window_manager_->RemoveConnection(this);
23}
24
25void WindowManagerServiceImpl::NotifyReady() {
26  client()->OnWindowManagerReady();
27}
28
29void WindowManagerServiceImpl::NotifyViewFocused(Id new_focused_id,
30                                                 Id old_focused_id) {
31  client()->OnFocusChanged(old_focused_id, new_focused_id);
32}
33
34void WindowManagerServiceImpl::NotifyWindowActivated(Id new_active_id,
35                                                     Id old_active_id) {
36  client()->OnActiveWindowChanged(old_active_id, new_active_id);
37}
38
39////////////////////////////////////////////////////////////////////////////////
40// WindowManagerServiceImpl, WindowManager implementation:
41
42void WindowManagerServiceImpl::SetCapture(
43    Id view,
44    const Callback<void(bool)>& callback) {
45  bool success = window_manager_->IsReady();
46  if (success)
47    window_manager_->SetCapture(view);
48  callback.Run(success);
49}
50
51void WindowManagerServiceImpl::FocusWindow(
52    Id view,
53    const Callback<void(bool)>& callback) {
54  bool success = window_manager_->IsReady();
55  if (success)
56    window_manager_->FocusWindow(view);
57  callback.Run(success);
58}
59
60void WindowManagerServiceImpl::ActivateWindow(
61    Id view,
62    const Callback<void(bool)>& callback) {
63  bool success = window_manager_->IsReady();
64  if (success)
65    window_manager_->ActivateWindow(view);
66  callback.Run(success);
67}
68
69////////////////////////////////////////////////////////////////////////////////
70// WindowManagerServiceImpl, InterfaceImpl overrides:
71
72void WindowManagerServiceImpl::OnConnectionEstablished() {
73  // If the connection was established prior to the window manager being
74  // embedded by the view manager, |window_manager_|'s ViewManagerDelegate
75  // impl will call NotifyReady() when it is.
76  if (window_manager_->IsReady())
77    NotifyReady();
78}
79
80}  // namespace mojo
81