1// Copyright (c) 2012 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#include "ui/aura/client/focus_client.h"
6
7#include "ui/aura/window_event_dispatcher.h"
8#include "ui/aura/window_property.h"
9
10DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, aura::Window*)
11DECLARE_WINDOW_PROPERTY_TYPE(aura::client::FocusClient*)
12
13namespace aura {
14namespace client {
15
16DEFINE_WINDOW_PROPERTY_KEY(FocusClient*, kRootWindowFocusClientKey, NULL);
17
18void SetFocusClient(Window* root_window, FocusClient* client) {
19  DCHECK_EQ(root_window->GetRootWindow(), root_window);
20  root_window->SetProperty(kRootWindowFocusClientKey, client);
21}
22
23FocusClient* GetFocusClient(Window* window) {
24  return GetFocusClient(static_cast<const Window*>(window));
25}
26
27FocusClient* GetFocusClient(const Window* window) {
28  const Window* root_window = window->GetRootWindow();
29  return root_window ?
30      root_window->GetProperty(kRootWindowFocusClientKey) : NULL;
31}
32
33}  // namespace client
34}  // namespace aura
35