Index: mojo/services/window_manager/focus_controller.cc |
diff --git a/mojo/services/window_manager/focus_controller.cc b/mojo/services/window_manager/focus_controller.cc |
index ac24ade8aac308eeee2c71ab62c696922666a33d..7c5119560f9321fdada2be2b2cec242dcc6ccc92 100644 |
--- a/mojo/services/window_manager/focus_controller.cc |
+++ b/mojo/services/window_manager/focus_controller.cc |
@@ -5,6 +5,7 @@ |
#include "mojo/services/window_manager/focus_controller.h" |
#include "base/auto_reset.h" |
+#include "mojo/services/public/cpp/view_manager/view_property.h" |
#include "mojo/services/public/cpp/view_manager/view_tracker.h" |
#include "mojo/services/window_manager/focus_controller_observer.h" |
#include "mojo/services/window_manager/focus_rules.h" |
@@ -12,8 +13,14 @@ |
#include "mojo/services/window_manager/window_manager_app.h" |
#include "ui/events/event.h" |
+DECLARE_VIEW_PROPERTY_TYPE(mojo::FocusController*); |
+ |
namespace mojo { |
+namespace { |
+DEFINE_VIEW_PROPERTY_KEY(FocusController*, kRootViewFocusController, nullptr); |
+} // namespace |
+ |
FocusController::FocusController(scoped_ptr<FocusRules> rules) |
: active_view_(nullptr), |
focused_view_(nullptr), |
@@ -298,4 +305,16 @@ void FocusController::ViewFocusedFromInputEvent(View* view) { |
FocusView(view); |
} |
+void SetFocusController(View* root_view, FocusController* focus_controller) { |
+ DCHECK_EQ(root_view->GetRoot(), root_view); |
+ root_view->SetLocalProperty(kRootViewFocusController, focus_controller); |
+} |
+ |
+FocusController* GetFocusController(View* root_view) { |
+ if (root_view) |
+ DCHECK_EQ(root_view->GetRoot(), root_view); |
+ return root_view ? |
+ root_view->GetLocalProperty(kRootViewFocusController) : nullptr; |
+} |
+ |
} // namespace mojo |