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 "ash/test/test_activation_delegate.h"
6
7#include "ash/wm/window_util.h"
8#include "ui/aura/client/aura_constants.h"
9#include "ui/aura/window.h"
10#include "ui/events/event.h"
11
12namespace ash {
13namespace test {
14
15////////////////////////////////////////////////////////////////////////////////
16// TestActivationDelegate
17
18TestActivationDelegate::TestActivationDelegate()
19    : window_(NULL),
20      window_was_active_(false),
21      activate_(true),
22      activated_count_(0),
23      lost_active_count_(0),
24      should_activate_count_(0) {
25}
26
27TestActivationDelegate::TestActivationDelegate(bool activate)
28    : window_(NULL),
29      window_was_active_(false),
30      activate_(activate),
31      activated_count_(0),
32      lost_active_count_(0),
33      should_activate_count_(0) {
34}
35
36void TestActivationDelegate::SetWindow(aura::Window* window) {
37  window_ = window;
38  aura::client::SetActivationDelegate(window, this);
39  aura::client::SetActivationChangeObserver(window, this);
40}
41
42bool TestActivationDelegate::ShouldActivate() const {
43  should_activate_count_++;
44  return activate_;
45}
46
47void TestActivationDelegate::OnWindowActivated(aura::Window* gained_active,
48                                               aura::Window* lost_active) {
49  DCHECK(window_ == gained_active || window_ == lost_active);
50  if (window_ == gained_active) {
51    activated_count_++;
52  } else if (window_ == lost_active) {
53    if (lost_active_count_++ == 0)
54      window_was_active_ = wm::IsActiveWindow(window_);
55  }
56}
57
58}  // namespace test
59}  // namespace ash
60