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 UI_AURA_CLIENT_VISIBILITY_CLIENT_H_
6#define UI_AURA_CLIENT_VISIBILITY_CLIENT_H_
7
8#include "ui/aura/aura_export.h"
9
10namespace aura {
11class Window;
12namespace client {
13
14// An interface implemented by an object that manages the visibility of Windows'
15// layers as Window visibility changes.
16class AURA_EXPORT VisibilityClient {
17 public:
18  // Called when |window|'s visibility is changing to |visible|. The implementor
19  // can decide whether or not to pass on the visibility to the underlying
20  // layer.
21  virtual void UpdateLayerVisibility(Window* window, bool visible) = 0;
22
23 protected:
24  virtual ~VisibilityClient() {}
25};
26
27// Sets the VisibilityClient on the Window.
28AURA_EXPORT void SetVisibilityClient(Window* window, VisibilityClient* client);
29
30// Gets the VisibilityClient for the window. This will crawl up |window|'s
31// hierarchy until it finds one.
32AURA_EXPORT VisibilityClient* GetVisibilityClient(Window* window);
33
34}  // namespace clients
35}  // namespace aura
36
37#endif  // UI_AURA_CLIENT_VISIBILITY_CLIENT_H_
38