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#ifndef ASH_TEST_TEST_ACTIVATION_DELEGATE_H_
6#define ASH_TEST_TEST_ACTIVATION_DELEGATE_H_
7
8#include "base/compiler_specific.h"
9#include "base/logging.h"
10#include "ui/aura/client/activation_change_observer.h"
11#include "ui/aura/client/activation_delegate.h"
12#include "ui/base/events/event_handler.h"
13
14namespace aura {
15class Window;
16}
17
18namespace ash {
19namespace test {
20
21// A test ActivationDelegate that can be used to track activation changes for
22// an aura::Window.
23class TestActivationDelegate : public aura::client::ActivationDelegate,
24                               public aura::client::ActivationChangeObserver {
25 public:
26  TestActivationDelegate();
27  explicit TestActivationDelegate(bool activate);
28
29  // Associates this delegate with a Window.
30  void SetWindow(aura::Window* window);
31
32  bool window_was_active() const { return window_was_active_; }
33  void set_activate(bool v) { activate_ = v; }
34  int activated_count() const { return activated_count_; }
35  int lost_active_count() const { return lost_active_count_; }
36  int should_activate_count() const { return should_activate_count_; }
37  void Clear() {
38    activated_count_ = lost_active_count_ = should_activate_count_ = 0;
39    window_was_active_ = false;
40  }
41
42  // Overridden from aura::client::ActivationDelegate:
43  virtual bool ShouldActivate() const OVERRIDE;
44
45 private:
46  // Overridden from aura::client::ActivationChangeObserver:
47  virtual void OnWindowActivated(aura::Window* gained_active,
48                                 aura::Window* lost_active) OVERRIDE;
49
50  aura::Window* window_;
51  bool window_was_active_;
52  bool activate_;
53  int activated_count_;
54  int lost_active_count_;
55  mutable int should_activate_count_;
56
57  DISALLOW_COPY_AND_ASSIGN(TestActivationDelegate);
58};
59
60}  // namespace test
61}  // namespace ash
62
63#endif  // ASH_TEST_TEST_ACTIVATION_DELEGATE_H_
64