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#ifndef UI_AURA_CLIENT_CAPTURE_CLIENT_H_
6#define UI_AURA_CLIENT_CAPTURE_CLIENT_H_
7
8#include "ui/aura/aura_export.h"
9
10namespace aura {
11class Window;
12
13namespace client {
14
15// An interface implemented by an object that manages input capture.
16class AURA_EXPORT CaptureClient {
17 public:
18  // Does a capture on the |window|.
19  virtual void SetCapture(Window* window) = 0;
20
21  // Releases a capture from the |window|.
22  virtual void ReleaseCapture(Window* window) = 0;
23
24  // Returns the current capture window. This may only return a Window if the
25  // Window that has capture is a child of the Window the CaptureClient is
26  // installed on. GetGlobalCaptureWindow() can be used to locate the Window
27  // that has capture regardless of the Window the CaptureClient is installed
28  // on.
29  virtual Window* GetCaptureWindow() = 0;
30
31  // See description of GetCaptureWindow() for details.
32  virtual Window* GetGlobalCaptureWindow() = 0;
33
34 protected:
35  virtual ~CaptureClient() {}
36};
37
38// Sets/Gets the capture client on the root Window.
39AURA_EXPORT void SetCaptureClient(Window* root_window,
40                                  CaptureClient* client);
41AURA_EXPORT CaptureClient* GetCaptureClient(Window* root_window);
42
43// A utility function to get the current capture window. Returns NULL
44// if the window doesn't have a root window, or there is no capture window.
45AURA_EXPORT Window* GetCaptureWindow(Window* window);
46
47}  // namespace clients
48}  // namespace aura
49
50#endif  // UI_AURA_CLIENT_CAPTURE_CLIENT_H_
51