default_capture_client.h 1.3 KB

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