// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_VIEW_MANAGER_SERVER_VIEW_OBSERVER_H_
#define SERVICES_VIEW_MANAGER_SERVER_VIEW_OBSERVER_H_

#include "mojo/services/view_manager/public/interfaces/view_manager_constants.mojom.h"

namespace gfx {
class Rect;
}

namespace mojo {
class ViewportMetrics;
}

namespace view_manager {

class ServerView;

// TODO(sky): rename to OnDid and OnWill everywhere.
class ServerViewObserver {
 public:
  // Invoked when a view is about to be destroyed; before any of the children
  // have been removed and before the view has been removed from its parent.
  virtual void OnWillDestroyView(ServerView* view) {}

  // Invoked at the end of the View's destructor (after it has been removed from
  // the hierarchy).
  virtual void OnViewDestroyed(ServerView* view) {}

  virtual void OnWillChangeViewHierarchy(ServerView* view,
                                         ServerView* new_parent,
                                         ServerView* old_parent) {}

  virtual void OnViewHierarchyChanged(ServerView* view,
                                      ServerView* new_parent,
                                      ServerView* old_parent) {}

  virtual void OnViewBoundsChanged(ServerView* view,
                                   const gfx::Rect& old_bounds,
                                   const gfx::Rect& new_bounds) {}

  virtual void OnViewReordered(ServerView* view,
                               ServerView* relative,
                               mojo::OrderDirection direction) {}

  virtual void OnWillChangeViewVisibility(ServerView* view) {}
  virtual void OnViewVisibilityChanged(ServerView* view) {}

  virtual void OnViewSharedPropertyChanged(
      ServerView* view,
      const std::string& name,
      const std::vector<uint8_t>* new_data) {}

 protected:
  virtual ~ServerViewObserver() {}
};

}  // namespace view_manager

#endif  // SERVICES_VIEW_MANAGER_SERVER_VIEW_OBSERVER_H_
