Index: ui/aura/env.h |
diff --git a/ui/aura/env.h b/ui/aura/env.h |
index d557a1f50f54d8f82d6276feaa940d017d1fb135..acd289b4c580e829932698ef9f9716ac5129edaf 100644 |
--- a/ui/aura/env.h |
+++ b/ui/aura/env.h |
@@ -22,6 +22,10 @@ class PlatformEventSource; |
} |
namespace aura { |
+namespace client { |
+class FocusClient; |
+} |
+ |
namespace test { |
class EnvTestHelper; |
} |
@@ -74,7 +78,17 @@ class AURA_EXPORT Env : public ui::EventTarget, public base::SupportsUserData { |
} |
ui::ContextFactory* context_factory() { return context_factory_; } |
+ // Sets the active FocusClient and the window the FocusClient is associated |
+ // with. |window| is not necessarily the window that actually has focus. |
+ // |window| may be null, which indicates all windows share a FocusClient. |
+ void SetActiveFocusClient(client::FocusClient* focus_client, |
+ Window* focus_client_root); |
+ client::FocusClient* active_focus_client() { return active_focus_client_; } |
+ Window* active_focus_client_root() { return active_focus_client_root_; } |
+ |
private: |
+ class ActiveFocusClientWindowObserver; |
+ |
friend class test::EnvTestHelper; |
friend class Window; |
friend class WindowTreeHost; |
@@ -92,6 +106,8 @@ class AURA_EXPORT Env : public ui::EventTarget, public base::SupportsUserData { |
// Invoked by WindowTreeHost when it is activated. Notifies observers. |
void NotifyHostActivated(WindowTreeHost* host); |
+ void OnActiveFocusClientWindowDestroying(); |
+ |
// Overridden from ui::EventTarget: |
bool CanAcceptEvent(const ui::Event& event) override; |
ui::EventTarget* GetParentTarget() override; |
@@ -112,6 +128,11 @@ class AURA_EXPORT Env : public ui::EventTarget, public base::SupportsUserData { |
ui::ContextFactory* context_factory_; |
+ Window* active_focus_client_root_ = nullptr; |
+ client::FocusClient* active_focus_client_ = nullptr; |
+ std::unique_ptr<ActiveFocusClientWindowObserver> |
+ active_focus_client_window_observer_; |
+ |
DISALLOW_COPY_AND_ASSIGN(Env); |
}; |