Index: ui/wm/core/focus_controller.h |
diff --git a/ui/wm/core/focus_controller.h b/ui/wm/core/focus_controller.h |
index 43d3c608b2138493f070bce4150b24a073edca58..5797031b9454847a0d097410d0ca574454155b08 100644 |
--- a/ui/wm/core/focus_controller.h |
+++ b/ui/wm/core/focus_controller.h |
@@ -12,6 +12,7 @@ |
#include "ui/aura/client/focus_client.h" |
#include "ui/aura/window_observer.h" |
#include "ui/events/event_handler.h" |
+#include "ui/wm/public/activation_change_observer.h" |
#include "ui/wm/public/activation_client.h" |
#include "ui/wm/wm_export.h" |
@@ -24,16 +25,19 @@ class FocusRules; |
// only one focused and one active window at a time. When focus or activation |
// changes notifications are sent using the |
// aura::client::Focus/ActivationChangeObserver interfaces. |
-// Changes to focus and activation can be from three sources: |
-// . the Aura Client API (implemented here in aura::client::ActivationClient). |
-// (The FocusController must be set as the ActivationClient implementation |
-// for all RootWindows). |
-// . input events (implemented here in ui::EventHandler). |
-// (The FocusController must be registered as a pre-target handler for |
-// the applicable environment owner, either a RootWindow or another type). |
-// . Window disposition changes (implemented here in aura::WindowObserver). |
-// (The FocusController registers itself as an observer of the active and |
-// focused windows). |
+// Changes to focus and activation can be from three sources. The source can be |
+// determined by the ActivationReason parameter in |
+// ActivationChangeObserver::OnWindowActivated(...). |
+// . ActivationReason::ACTIVATION_CLIENT: The Aura Client API (implemented here |
+// in aura::client::ActivationClient). (The FocusController must be set as the |
+// ActivationClient implementation for all RootWindows). |
+// . ActivationReason::INPUT_EVENT: Input events (implemented here in |
+// ui::EventHandler). (The FocusController must be registered as a pre-target |
+// handler for the applicable environment owner, either a RootWindow or |
+// another type). |
+// . ActivationReason::WINDOW_DISPOSITION_CHANGED: Window disposition changes |
+// (implemented here in aura::WindowObserver). (The FocusController registers |
+// itself as an observer of the active and focused windows). |
class WM_EXPORT FocusController : public aura::client::ActivationClient, |
public aura::client::FocusClient, |
public ui::EventHandler, |
@@ -75,18 +79,26 @@ class WM_EXPORT FocusController : public aura::client::ActivationClient, |
void OnWindowHierarchyChanging(const HierarchyChangeParams& params) override; |
void OnWindowHierarchyChanged(const HierarchyChangeParams& params) override; |
+ // Internal implementation that coordinates window focus and activation |
+ // changes. |
+ void FocusAndActivateWindow( |
+ aura::client::ActivationChangeObserver::ActivationReason reason, |
+ aura::Window* window); |
+ |
// Internal implementation that sets the focused window, fires events etc. |
// This function must be called with a valid focusable window. |
void SetFocusedWindow(aura::Window* window); |
// Internal implementation that sets the active window, fires events etc. |
// This function must be called with a valid |activatable_window|. |
- // |requested window| refers to the window that was passed in to an external |
+ // |requested_window| refers to the window that was passed in to an external |
// request (e.g. FocusWindow or ActivateWindow). It may be NULL, e.g. if |
// SetActiveWindow was not called by an external request. |activatable_window| |
// refers to the actual window to be activated, which may be different. |
- void SetActiveWindow(aura::Window* requested_window, |
- aura::Window* activatable_window); |
+ void SetActiveWindow( |
+ aura::client::ActivationChangeObserver::ActivationReason reason, |
+ aura::Window* requested_window, |
+ aura::Window* activatable_window); |
// Called when a window's disposition changed such that it and its hierarchy |
// are no longer focusable/activatable. |next| is a valid window that is used |