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