1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_OBSERVER_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_OBSERVER_H_ 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <vector> 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/basictypes.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/services/public/cpp/view_manager/view.h" 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/services/public/interfaces/input_events/input_events.mojom.h" 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace gfx { 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class Rect; 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace mojo { 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class View; 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// A note on -ing and -ed suffixes: 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// -ing methods are called before changes are applied to the local view model. 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// -ed methods are called after changes are applied to the local view model. 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// If the change originated from another connection to the view manager, it's 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// possible that the change has already been applied to the service-side model 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// prior to being called, so for example in the case of OnViewDestroying(), it's 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// possible the view has already been destroyed on the service side. 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ViewObserver { 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) struct TreeChangeParams { 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TreeChangeParams(); 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* target; 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* old_parent; 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* new_parent; 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* receiver; 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnTreeChanging(const TreeChangeParams& params) {} 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnTreeChanged(const TreeChangeParams& params) {} 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnViewReordering(View* view, 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* relative_view, 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) OrderDirection direction) {} 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnViewReordered(View* view, 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* relative_view, 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) OrderDirection direction) {} 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnViewDestroying(View* view) {} 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnViewDestroyed(View* view) {} 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnViewBoundsChanging(View* view, 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const gfx::Rect& old_bounds, 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const gfx::Rect& new_bounds) {} 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnViewBoundsChanged(View* view, 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const gfx::Rect& old_bounds, 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const gfx::Rect& new_bounds) {} 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnViewFocusChanged(View* gained_focus, View* lost_focus) {} 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void OnViewInputEvent(View* view, const EventPtr& event) {} 6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) protected: 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~ViewObserver() {} 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace mojo 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_OBSERVER_H_ 74