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_DEFAULT_CAPTURE_CLIENT_H_
6 #define UI_AURA_CLIENT_DEFAULT_CAPTURE_CLIENT_H_
7 
8 #include "base/macros.h"
9 #include "base/observer_list.h"
10 #include "ui/aura/aura_export.h"
11 #include "ui/aura/client/capture_client.h"
12 
13 namespace aura {
14 namespace client {
15 
16 class AURA_EXPORT DefaultCaptureClient : public client::CaptureClient {
17  public:
18   explicit DefaultCaptureClient(Window* root_window);
19   ~DefaultCaptureClient() override;
20 
21  protected:
22   // Overridden from client::CaptureClient:
23   void SetCapture(Window* window) override;
24   void ReleaseCapture(Window* window) override;
25   Window* GetCaptureWindow() override;
26   Window* GetGlobalCaptureWindow() override;
27   void AddObserver(CaptureClientObserver* observer) override;
28   void RemoveObserver(CaptureClientObserver* observer) override;
29 
30  private:
31   Window* root_window_;  // May be null.
32   Window* capture_window_;
33   base::ObserverList<CaptureClientObserver>::Unchecked observers_;
34 
35   DISALLOW_COPY_AND_ASSIGN(DefaultCaptureClient);
36 };
37 
38 }  // namespace client
39 }  // namespace aura
40 
41 #endif  // UI_AURA_CLIENT_DEFAULT_CAPTURE_CLIENT_H_
42