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