Home | History | Annotate | Download | only in client
      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 
     10 namespace aura {
     11 class Window;
     12 namespace client {
     13 
     14 // An interface implemented by an object that manages the visibility of Windows'
     15 // layers as Window visibility changes.
     16 class 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.
     28 AURA_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.
     32 AURA_EXPORT VisibilityClient* GetVisibilityClient(Window* window);
     33 
     34 }  // namespace clients
     35 }  // namespace aura
     36 
     37 #endif  // UI_AURA_CLIENT_VISIBILITY_CLIENT_H_
     38