15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/aura_export.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace client {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AURA_EXPORT ActivationChangeObserver {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called when |active| gains focus, or there is no active window
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (|active| is NULL in this case.) |old_active| refers to the
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // previous active window or NULL if there was no previously active
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // window.
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnWindowActivated(Window* gained_active,
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 Window* lost_active) = 0;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Called when during window activation the currently active window is
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // selected for activation. This can happen when a window requested for
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // activation cannot be activated because a system modal window is active.
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void OnAttemptToReactivateWindow(aura::Window* request_active,
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                           aura::Window* actual_active) {}
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~ActivationChangeObserver() {}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Gets/Sets the ActivationChangeObserver for a specific window. This observer
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// is notified after the ActivationClient notifies all registered observers.
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AURA_EXPORT void SetActivationChangeObserver(
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Window* window,
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ActivationChangeObserver* observer);
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AURA_EXPORT ActivationChangeObserver* GetActivationChangeObserver(
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Window* window);
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace client
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace aura
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_
46