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

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

Issue 2468493002: Fix bug in keeping capture in sync during destruction (Closed)
Patch Set: feedback Created 4 years, 1 month 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 | « ui/aura/BUILD.gn ('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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_
6 #define UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_
7
8 #include <stdint.h>
9
10 #include "base/macros.h"
11 #include "ui/aura/aura_export.h"
12 #include "ui/aura/client/capture_client_observer.h"
13 #include "ui/aura/window_observer.h"
14
15 namespace ui {
16 namespace mojom {
17 class WindowTree;
18 }
19 }
20
21 namespace aura {
22 class CaptureSynchronizerDelegate;
23 class WindowMus;
24
25 namespace client {
26 class CaptureClient;
27 }
28
29 // CaptureSynchronizer is resonsible for keeping capture in sync between aura
30 // and the mus server.
31 class CaptureSynchronizer : public WindowObserver,
32 public client::CaptureClientObserver {
33 public:
34 CaptureSynchronizer(CaptureSynchronizerDelegate* delegate,
35 ui::mojom::WindowTree* window_tree,
36 client::CaptureClient* capture_client);
37 ~CaptureSynchronizer() override;
38
39 WindowMus* capture_window() { return capture_window_; }
40
41 // Called when the server side wants to change capture to |window|.
42 void SetCaptureFromServer(WindowMus* window);
43
44 private:
45 // Internal implementation for capture changes. Adds/removes observer as
46 // necessary and sets |capture_window_| to |window|.
47 void SetCaptureWindow(WindowMus* window);
48
49 // WindowObserver:
50 void OnWindowDestroying(Window* window) override;
51
52 // client::CaptureClientObserver:
53 void OnCaptureChanged(Window* lost_capture, Window* gained_capture) override;
54
55 CaptureSynchronizerDelegate* delegate_;
56 ui::mojom::WindowTree* window_tree_;
57 client::CaptureClient* capture_client_;
58
59 // Window that currently has capture.
60 WindowMus* capture_window_ = nullptr;
61
62 // Used when setting capture from the server to avoid setting capture back
63 // on the server. If |setting_capture_| is true SetCaptureFromServer() was
64 // called and |window_setting_capture_to_| is the window capture is being
65 // set on.
66 bool setting_capture_ = false;
67 WindowMus* window_setting_capture_to_ = nullptr;
68
69 DISALLOW_COPY_AND_ASSIGN(CaptureSynchronizer);
70 };
71
72 } // namespace aura
73
74 #endif // UI_AURA_MUS_CAPTURE_SYNCHRONIZER_H_
OLDNEW
« no previous file with comments | « ui/aura/BUILD.gn ('k') | ui/aura/mus/capture_synchronizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698