Home | History | Annotate | Download | only in public
      1 // Copyright (c) 2013 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_V2_PUBLIC_VIEW_OBSERVER_H_
      6 #define UI_V2_PUBLIC_VIEW_OBSERVER_H_
      7 
      8 #include "ui/v2/public/v2_export.h"
      9 
     10 namespace gfx {
     11 class Rect;
     12 }
     13 
     14 namespace v2 {
     15 
     16 class View;
     17 
     18 // Observe View disposition changes. -ing methods are called before the change
     19 // is committed, -ed methods are called after.
     20 class V2_EXPORT ViewObserver {
     21  public:
     22   // Whether a notification is being sent before or after some property has
     23   // changed.
     24   enum DispositionChangePhase {
     25     DISPOSITION_CHANGING,
     26     DISPOSITION_CHANGED
     27   };
     28 
     29   // Tree.
     30   struct TreeChangeParams {
     31     TreeChangeParams();
     32     View* target;
     33     View* old_parent;
     34     View* new_parent;
     35     View* receiver;
     36     DispositionChangePhase phase;
     37   };
     38 
     39   // Called when a node is added or removed. Notifications are sent to the
     40   // following hierarchies in this order:
     41   // 1. |target|.
     42   // 2. |target|'s child hierarchy.
     43   // 3. |target|'s parent hierarchy in its |old_parent|
     44   //        (only for Changing notifications).
     45   // 3. |target|'s parent hierarchy in its |new_parent|.
     46   //        (only for Changed notifications).
     47   // This sequence is performed via the OnTreeChange notification below before
     48   // and after the change is committed.
     49   virtual void OnViewTreeChange(const TreeChangeParams& params) {}
     50 
     51   // Disposition.
     52   virtual void OnViewDestroy(View* view, DispositionChangePhase phase) {}
     53   virtual void OnViewBoundsChanged(View* view,
     54                                    const gfx::Rect& old_bounds,
     55                                    const gfx::Rect& new_bounds) {}
     56   virtual void OnViewVisibilityChange(View* view,
     57                                       DispositionChangePhase phase) {}
     58 
     59  protected:
     60   virtual ~ViewObserver() {}
     61 };
     62 
     63 }  // namespace v2
     64 
     65 #endif  // UI_V2_PUBLIC_VIEW_OBSERVER_H_
     66