Home | History | Annotate | Download | only in test
      1 // Copyright 2013 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/test/test_focus_client.h"
      6 
      7 #include "ui/aura/client/focus_change_observer.h"
      8 #include "ui/aura/window.h"
      9 
     10 namespace aura {
     11 namespace test {
     12 
     13 ////////////////////////////////////////////////////////////////////////////////
     14 // TestFocusClient, public:
     15 
     16 TestFocusClient::TestFocusClient()
     17     : focused_window_(NULL),
     18       observer_manager_(this) {
     19 }
     20 
     21 TestFocusClient::~TestFocusClient() {
     22 }
     23 
     24 ////////////////////////////////////////////////////////////////////////////////
     25 // TestFocusClient, client::FocusClient implementation:
     26 
     27 void TestFocusClient::AddObserver(client::FocusChangeObserver* observer) {
     28 }
     29 
     30 void TestFocusClient::RemoveObserver(client::FocusChangeObserver* observer) {
     31 }
     32 
     33 void TestFocusClient::FocusWindow(Window* window) {
     34   if (window && !window->CanFocus())
     35     return;
     36   if (focused_window_)
     37     observer_manager_.Remove(focused_window_);
     38   aura::Window* old_focused_window = focused_window_;
     39   focused_window_ = window;
     40   if (focused_window_)
     41     observer_manager_.Add(focused_window_);
     42 
     43   client::FocusChangeObserver* observer =
     44       client::GetFocusChangeObserver(old_focused_window);
     45   if (observer)
     46     observer->OnWindowFocused(focused_window_, old_focused_window);
     47   observer = client::GetFocusChangeObserver(focused_window_);
     48   if (observer)
     49     observer->OnWindowFocused(focused_window_, old_focused_window);
     50 }
     51 
     52 void TestFocusClient::ResetFocusWithinActiveWindow(Window* window) {
     53   if (!window->Contains(focused_window_))
     54     FocusWindow(window);
     55 }
     56 
     57 Window* TestFocusClient::GetFocusedWindow() {
     58   return focused_window_;
     59 }
     60 
     61 ////////////////////////////////////////////////////////////////////////////////
     62 // TestFocusClient, WindowObserver implementation:
     63 
     64 void TestFocusClient::OnWindowDestroying(Window* window) {
     65   DCHECK_EQ(window, focused_window_);
     66   FocusWindow(NULL);
     67 }
     68 
     69 }  // namespace test
     70 }  // namespace aura
     71