Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: ui/aura/mus/capture_synchronizer.h

Issue 2626013005: Change CaptureSynchronizer and PointerWatcherEventRouter to support multiple CaptureClients. (Closed)
Patch Set: fix leak in test Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/mus/window_manager.cc ('k') | ui/aura/mus/capture_synchronizer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_ 5 #ifndef UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_
6 #define UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_ 6 #define UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 10 matching lines...) Expand all
21 namespace aura { 21 namespace aura {
22 class CaptureSynchronizerDelegate; 22 class CaptureSynchronizerDelegate;
23 class WindowMus; 23 class WindowMus;
24 24
25 namespace client { 25 namespace client {
26 class CaptureClient; 26 class CaptureClient;
27 } 27 }
28 28
29 // CaptureSynchronizer is resonsible for keeping capture in sync between aura 29 // CaptureSynchronizer is resonsible for keeping capture in sync between aura
30 // and the mus server. 30 // and the mus server.
31 class CaptureSynchronizer : public WindowObserver, 31 class AURA_EXPORT CaptureSynchronizer : public WindowObserver,
32 public client::CaptureClientObserver { 32 public client::CaptureClientObserver {
33 public: 33 public:
34 CaptureSynchronizer(CaptureSynchronizerDelegate* delegate, 34 CaptureSynchronizer(CaptureSynchronizerDelegate* delegate,
35 ui::mojom::WindowTree* window_tree, 35 ui::mojom::WindowTree* window_tree);
36 client::CaptureClient* capture_client);
37 ~CaptureSynchronizer() override; 36 ~CaptureSynchronizer() override;
38 37
39 WindowMus* capture_window() { return capture_window_; } 38 WindowMus* capture_window() { return capture_window_; }
40 39
41 // Called when the server side wants to change capture to |window|. 40 // Called when the server side wants to change capture to |window|.
42 void SetCaptureFromServer(WindowMus* window); 41 void SetCaptureFromServer(WindowMus* window);
43 42
43 // Called when the |capture_client| has been set or will be unset.
44 void AttachToCaptureClient(client::CaptureClient* capture_client);
45 void DetachFromCaptureClient(client::CaptureClient* capture_client);
46
44 private: 47 private:
45 // Internal implementation for capture changes. Adds/removes observer as 48 // Internal implementation for capture changes. Adds/removes observer as
46 // necessary and sets |capture_window_| to |window|. 49 // necessary and sets |capture_window_| to |window|.
47 void SetCaptureWindow(WindowMus* window); 50 void SetCaptureWindow(WindowMus* window);
48 51
49 // WindowObserver: 52 // WindowObserver:
50 void OnWindowDestroying(Window* window) override; 53 void OnWindowDestroying(Window* window) override;
51 54
52 // client::CaptureClientObserver: 55 // client::CaptureClientObserver:
53 void OnCaptureChanged(Window* lost_capture, Window* gained_capture) override; 56 void OnCaptureChanged(Window* lost_capture, Window* gained_capture) override;
54 57
55 CaptureSynchronizerDelegate* delegate_; 58 CaptureSynchronizerDelegate* delegate_;
56 ui::mojom::WindowTree* window_tree_; 59 ui::mojom::WindowTree* window_tree_;
57 client::CaptureClient* capture_client_;
58 60
59 // Window that currently has capture. 61 // Window that currently has capture.
60 WindowMus* capture_window_ = nullptr; 62 WindowMus* capture_window_ = nullptr;
61 63
62 // Used when setting capture from the server to avoid setting capture back 64 // Used when setting capture from the server to avoid setting capture back
63 // on the server. If |setting_capture_| is true SetCaptureFromServer() was 65 // on the server. If |setting_capture_| is true SetCaptureFromServer() was
64 // called and |window_setting_capture_to_| is the window capture is being 66 // called and |window_setting_capture_to_| is the window capture is being
65 // set on. 67 // set on.
66 bool setting_capture_ = false; 68 bool setting_capture_ = false;
67 WindowMus* window_setting_capture_to_ = nullptr; 69 WindowMus* window_setting_capture_to_ = nullptr;
68 70
69 DISALLOW_COPY_AND_ASSIGN(CaptureSynchronizer); 71 DISALLOW_COPY_AND_ASSIGN(CaptureSynchronizer);
70 }; 72 };
71 73
72 } // namespace aura 74 } // namespace aura
73 75
74 #endif // UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_ 76 #endif // UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_
OLDNEW
« no previous file with comments | « ash/mus/window_manager.cc ('k') | ui/aura/mus/capture_synchronizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698