146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#ifndef MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_H_ 646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_H_ 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/services/public/cpp/view_manager/view_observer.h" 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/aura/window_tree_host.h" 1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/events/event_source.h" 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/gfx/geometry/rect.h" 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SkBitmap; 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace ui { 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Compositor; 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace mojo { 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class WindowTreeHostMojoDelegate; 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class WindowTreeHostMojo : public aura::WindowTreeHost, 246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) public ui::EventSource, 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public ViewObserver { 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public: 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) WindowTreeHostMojo(View* view, WindowTreeHostMojoDelegate* delegate); 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~WindowTreeHostMojo(); 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Returns the WindowTreeHostMojo for the specified compositor. 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) static WindowTreeHostMojo* ForCompositor(ui::Compositor* compositor); 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const gfx::Rect& bounds() const { return bounds_; } 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Sets the contents to show in this WindowTreeHost. This forwards to the 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // delegate. 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void SetContents(const SkBitmap& contents); 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ui::EventDispatchDetails SendEventToProcessor(ui::Event* event) { 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return ui::EventSource::SendEventToProcessor(event); 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private: 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // WindowTreeHost: 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual ui::EventSource* GetEventSource() OVERRIDE; 4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual gfx::AcceleratedWidget GetAcceleratedWidget() OVERRIDE; 4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void Show() OVERRIDE; 4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void Hide() OVERRIDE; 4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual gfx::Rect GetBounds() const OVERRIDE; 5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; 5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual gfx::Point GetLocationOnNativeScreen() const OVERRIDE; 5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void SetCapture() OVERRIDE; 5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void ReleaseCapture() OVERRIDE; 5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void PostNativeEvent(const base::NativeEvent& native_event) OVERRIDE; 5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void SetCursorNative(gfx::NativeCursor cursor) OVERRIDE; 5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void MoveCursorToNative(const gfx::Point& location) OVERRIDE; 5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void OnCursorVisibilityChangedNative(bool show) OVERRIDE; 5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // ui::EventSource: 6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual ui::EventProcessor* GetEventProcessor() OVERRIDE; 6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ViewObserver: 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnViewBoundsChanged( 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* view, 656d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) const gfx::Rect& old_bounds, 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Rect& new_bounds) OVERRIDE; 676d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) View* view_; 696d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) gfx::Rect bounds_; 7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) WindowTreeHostMojoDelegate* delegate_; 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WindowTreeHostMojo); 7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}; 7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace mojo 7846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif // MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_H_ 80